php - require_once 和 include_once 不能正确解析文件

标签 php windows codeigniter symlink

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')

返回真

is_readable('system/application/shared/config/language.php')

返回真

$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'));

返回一个有效的文件资源并将其存储到 $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");

返回:

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

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");

整个表达式

('system/application/shared/config/database.php') 
 or die("Cannot Include Language Config");

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

不过,您所做的并没有实际意义,因为当加载文件失败时,include 不会返回 falserequire_once() 无论如何都会终止脚本的执行。如果您在生产环境中注意错误报告的切换,您可能会很容易地忍受 PHP fatal error 告诉您文件不存在(而不是您的自定义 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');

关于php - require_once 和 include_once 不能正确解析文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3175178/

相关文章:

如果表为空,则为 Php & mysql

php - 如何安装定时任务

html - 如何通过文件 ://protocol 从远程文件播放音频

c# - FileSystemWatcher 类 - 简单问题

jquery - 在下拉列表更改时显示 Bootstrap 模式表单,并在插入数据库后选择该值

php - 更新数据库并更新变量

php - 在 404 中使用 Symfony2 assetic 结果

windows - AutoHotKey:如何获取 find 命令的错误级别?

php - 如何管理多个用户在mysql中的工作/打开项目记录?

jquery - AJAX 调用似乎从未发生过