3

我在使用requirerequire_once调用后代码停止执行时遇到一些问题,我正在努力找出导致问题的确切原因。

我已经检查了文件是否存在并且可以读取(通过file_existsis_readable),但是这两个似乎都是真的,所以我有点难过。

require_once('file1.php');
print('a');
$file = 'file2.php';
if (!file_exists($file)) { die('file does not exist'); }
if (!is_readable($file)) { die('cannot read file'); }
require_once($file);
print('b');

上面的代码只输出'a',之后什么也没有。

服务器上的另一个文件以相同的方式使用有问题的两个文件,没有问题。

还有什么我可以检查的吗?

任何帮助,将不胜感激。

编辑:

设置error_reporting(E_ALL)不会改变输出。

将文件路径更改为同一目录中的空白文件会将输出更改为“ab”,表明 require 已经工作并表明它们是 的问题file2.php,但是服务器上的另一个文件以完全相同的方式成功使用了这些文件。

运行php -lfile2.php 不会返回错误。

注释掉第一个要求没有任何区别。

编辑2:

问题在于调用class_exists和版本 5.0 中的行为更改与自动加载有关。有问题的代码是在升级到 5.0 之前编写的。

4

2 回答 2

3

设置error_reporting(E_ALL)并尝试包含一个空文件而不是file2.php.

也许file2.php有一些错误会阻止流程

于 2012-09-27T08:40:37.557 回答
1

file2.php您的文件中的某处可能存在错误。您应该启用错误报告:

error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);

失败时的错误报告级别require_once将是E_COMPILE_ERROR

UPDATE 检查是否file1file2定义函数同名,或者有其他不兼容的逻辑。

于 2012-09-27T08:44:07.527 回答