所以,我有一个目录和像这样的子
+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'
答案 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/";
这也用于可移植性,如果你决定移动源,你可以修改配置;此外,这是在脚本中包含或要求文件的有效方法。