簡體   English   中英

致命錯誤:require():需要打開失敗

[英]Fatal error : require(): Failed opening required

所以,我有一個目錄和這樣的子目錄

+task
  +Include  
    +vendor  
     - autoload.php

  +Theme  
    +action
     - doInsert.php
    +objects
     - CardAccessor.php

當我嘗試在CardAccessor.php調用autoload.php時出現錯誤

doInsert.php

require_once '../objects/CardAccessor.php';

CardAccessor.php

require '/../include/vendor/autoload.php';

錯誤說:

警告:require(/../ include / vendor / autoload.php):無法打開流:沒有此類文件或目錄致命錯誤:require():無法打開所需的'/../include/vendor/autoload.php'

require '/../include/vendor/autoload.php'不起作用,您需要先require '/../include/vendor/autoload.php'斜線。 在編寫時,第一個斜杠告訴它進入根目錄,然后從那里向上上升(它不能執行,因為它已經在根目錄了)。

給定您的目錄結構,我認為require '../../include/vendor/autoload.php'應該可以工作。

當您執行include ,路徑始終相對於包含該文件的文件。

您需要輸入的是require '../../Include/vendors/autoload.php'或設置完整路徑,例如require '/my/project/path/task/Include/vendor/autoload.php' path/ require '/my/project/path/task/Include/vendor/autoload.php'

這與您的問題有關:PHP- 相對路徑“ require”

您需要定義一個配置

如果這是linux unix使用

$baseDir = "/base/dir"; //to define where in the root filesys where youre scripts and assets live

然后使用

$baseDir."/task/Include" or 
$baseDir."/task/Theme/objects/CardAccessor.php" or 
$baseDir."/task/include/vendor/autoload.php"

或者你可以創建

$sourceDir = $baseDir."/task/";

這也用於可移植性,如果您決定移動源,則可以修改配置; 此外,這是在腳本中包含或要求文件的有效方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM