繁体   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