致命错误:require():需要打开失败

时间:2014-12-15 18:59:06

标签: php path

所以,我有一个目录和像这样的子

+task
  +Include  
    +vendor  
     - autoload.php

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

当我尝试拨打autoload.php

中的CardAccessor.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'

3 个答案:

答案 0 :(得分:0)

require '/../include/vendor/autoload.php'不起作用,你需要先关掉第一个斜杠。在编写时,第一个斜杠告诉它转到根目录,然后从那里上升一个(它不能做,它已经在根目录)。

鉴于您的目录结构,我相信require '../../include/vendor/autoload.php'应该有用。

答案 1 :(得分:0)

执行include时,路径始终相对于包含该文件的文件。

您需要填写require '../../Include/vendors/autoload.php'或设置require '/my/project/path/task/Include/vendor/autoload.php'的完整路径。

这对您的问题非常重要:PHP - Relative paths "require"

答案 2 :(得分:0)

您需要定义配置

如果这是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/";

这也用于可移植性,如果你决定移动源,你可以修改配置;此外,这是在脚本中包含或要求文件的有效方法。