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的影响?如果我尝试将文件包含在我的设置中的任何其他位置,则可以正常加载.
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)