无法使用include()php函数从祖先文件夹加载文件

时间:2014-07-15 06:25:04

标签: php include

当我包含来自同一文件夹的文件时,例如

include('Car.php');

它完美无缺,但如果我将其移回一个文件夹并将包含更改为

include('../Car.php');

它返回以下消息:

  

警告:include(../ Car.php):无法打开流:第1行/Users/user/Desktop/Test/clases/Bus.php中没有此类文件或目录

     

警告:include():打开失败' ../ Car.php'在第1行的/Users/user/Desktop/Test/clases/Bus.php中包含(include_path ='。:/ Applications / MAMP / bin / php / php5.4.4 / lib / php') / p>

这是我的文件夹结构:

  • 测试/
    • Car.php
    • clases /
      • Bus.php

我试图在Bus.php中包含Car.php。

1 个答案:

答案 0 :(得分:2)

假设您正在使用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或require时包含__DIR__dirname(__FILE__)被认为是最佳做法,以便不依赖于配置的php include路径位置,这在大型应用程序中可能比明确定义路径信息慢得多

包含路径信息:http://php.net/manual/en/ini.core.php#ini.include-path