require_once和include_once无法正确解析文件

Ian*_*ant 1 php windows symlink codeigniter

我遇到PHP的require_once,require,include_once和include函数没有正确解析文件的问题.我在使用Apache 2.2.11的Windows Vista上运行PHP 5.3.1.

这些是我得到的问题:

file_exists('C:/wamp/www/park_factor_network/system/application/shared/config/language.php')
Run Code Online (Sandbox Code Playgroud)

返回TRUE

is_readable('system/application/shared/config/language.php')
Run Code Online (Sandbox Code Playgroud)

返回TRUE

$fp = fopen('C:/wamp/www/park_factor_network/system/application/shared/config/language.php','r');
$contents = fread($fp, filesize('C:/wamp/www/park_factor_network/system/application/shared/config/language.php'));
Run Code Online (Sandbox Code Playgroud)

返回有效的文件资源并将其存储到$ contents中

然而:

require_once('system/application/shared/config/database.php') or die("Cannot Include Language Config");
require_once('C:/wamp/www/park_factor_network/system/application/shared/config/language.php') or die("Cannot Include Language Config");
Run Code Online (Sandbox Code Playgroud)

返回:

Fatal error: require_once() [function.require]: Failed opening required '1' (include_path='.;C:\php5\pear') in C:\wamp\www\park_factor_network\system\application\shared\hooks\select_language.php on line 25
Run Code Online (Sandbox Code Playgroud)

C:\ wamp\www\park_factor_network\system\application \news_site\hooks是C:\ wamp\www\park_factor_network\system\application\shared\hooks的目录连接

我只是从框架中的某个位置访问此文件时遇到此问题,但是因为这是直接包含或要求它不应该受到那个而且只受PHP的影响?如果我尝试将文件包含在我的设置中的任何其他位置,则可以正常加载.

Pek*_*ica 7

require_once是一种语言结构.它不是一个功能,也没有返回值.

文件名参数周围的括号是可选的.这似乎意味着在这一行:

require_once('system/application/shared/config/database.php') 
             or die("Cannot Include Language Config");
Run Code Online (Sandbox Code Playgroud)

整个表达

('system/application/shared/config/database.php') 
 or die("Cannot Include Language Config");
Run Code Online (Sandbox Code Playgroud)

被评估(返回1)并用作文件名参数.1显然,不存在.

你正在做的事情并没有真正意义,因为加载文件失败时include不会返回false.require_once()无论如何都会终止脚本的执行.如果您负责在生产环境中切换错误报告,您可以轻松地使用PHP致命错误告诉您该文件不存在(而不是您的自定义die()).

如果您需要优雅地退出脚本,我会file_exists在语句之前进行调用,并die()在失败时:

$file = 'system/application/shared/config/database.php';

if ((!is_file($file)) or(!is_readable($file)))
   die("Cannot Include Language Config");

require_once('system/application/shared/config/database.php');
Run Code Online (Sandbox Code Playgroud)