当我包含来自同一文件夹的文件时,例如
include('Car.php');
效果很好,但是如果我把它移回一个文件夹并把include改为
include('../Car.php');
返回以下消息:
这是我的文件夹结构:警告:include(../Car.php): failed to open stream: line 1/Users/user/Desktop/Test/classes/Bus.php中没有这样的文件或目录
警告:include():打开'../Car.php'包含失败(include_path='.:/Applications/MAMP/bin/php/php5.4.4/lib/php')在第1行/Users/user/Desktop/Test/classes/Bus.php
- /
- 测试
- Car.php
- 一堂课/
- Bus.php
我试图从Bus.php中包含Car.php .
假设您使用的是php 5.3,请尝试使用
clearstatcache(true);
include realpath(__DIR__ . '/../Car.php');
//alternative
//include realpath(dirname(__FILE__) . '/../Car.php');
看看这是否能解决你的问题。
功能说明
clearstatcache(true)
将删除realpath的PHP缓存,一般可以删除。http://php.net/manual/en/function.clearstatcache.php
realpath
检查文件是否存在,展开所有符号链接并解析对'/'的引用。/,/. ./'或失败时返回false。http://php.net/manual/en/function.realpath.php
__DIR__
或dirname(__FILE__)
是当前目录的完整路径,而不是依赖于PHP的包含路径来确定文件的位置。
/../
告诉完整路径向上遍历一个目录,realpath
将其转换为实际路径并删除相对内涵。
主要问题可能是你的php.ini包含路径,因为include依赖于它,如果它不能找到包含文件的路径。在调用include或require时包含__DIR__
或dirname(__FILE__)
被认为是最佳实践,以便不依赖于配置的php include路径位置,这在大型应用程序中可能比显式定义路径信息要慢得多。
包含路径信息:http://php.net/manual/en/ini.core.php#ini.include-path