间歇性 - PHP警告:包括无法打开流:没有这样的文件或目录

时间:2016-06-02 23:18:56

标签: php

我有一个间歇性问题,错误包括无法打开流...

99.9%的时间包含完美,但在当天的高峰时段,我注意到我的php错误日志中出现错误。

PHP警告:include('database.php')无法打开流:没有这样的文件或目录

我只有一个包含此文件的文件,所以我完全了解它的作品,我们每天都有几千个请求,没有任何问题,但在这几千个请求中,我们似乎每天大约10个只是失败了错误PHP警告:include('database.php')无法打开流:没有这样的文件或目录

它让我发疯了! - 我已经做了一些挖掘,以查看同时从IIS服务器请求的其他内容,我可以看到我正在调用一个与上述文件无关的单独的php文件。它只是计算我的php错误日志中的行,如果有问题,它将发送电子邮件....

我想知道是否由于某种原因存在某种文件进程限制,这意味着如果错误日志足够大,下面的代码正在对PHP做些什么来阻止它完成其他地方的文件进程,例如includes ...

此代码的基础是: -

function getLines($file)
{
    $f = fopen($file, 'rb');
    $lines = 0;

    while (!feof($f)) {
        $lines += substr_count(fread($f, 8192), "\n");
    }

    fclose($f);

    return $lines;
}

$phpcount = getLines("c:/windows/temp/php-errors.log");

我想知道是否由于某种原因存在某种文件进程限制,这意味着如果错误日志太大,上面的代码就会崩溃并且PHP会停止在其他地方完成文件进程,从而导致我的包含问题......

1 个答案:

答案 0 :(得分:1)

我的猜测是错误来自文件中的包含,只是偶尔被调用。它可以是计算日志文件行的文件,也可以是发送电子邮件的文件。

根据this checklist,错误似乎是有问题的文件试图使用相对路径包含database.php,并且因为当前工作目录不同而失败。

清单中提到的解决方案是使用绝对路径。

在任何情况下,您都应该始终在包含中使用绝对路径。它很可能解决问题。