【发布时间】:2015-10-31 01:53:11
【问题描述】:
我有一台暂存服务器停止运行 cron 作业。经过一番研究,结果证明 require_once 失败了。
我看过其他相关问题,这与绝对或相对路径无关。我可以创建一个新文件 test.php,尝试在与文件所有者相同的文件夹中要求它,但失败:
php -r 'include("test.php"); echo "hello\n"'
你好
php -r 'require("test.php"); echo "hello\n"'
PHP 致命错误...打开 'test.php' 失败...包含路径 .:/usr/share/pear:/usr/share/php'
出于绝望,我将 test.php 移至 /usr/share/pear/test.php,同样的错误。我也试过./test.php,__dir__."/test.php",同样的错误。
PHP 5.3.3,已过时,但可在其他 2 台服务器(开发和产品)上运行
只是坏了吗?
【问题讨论】:
-
对于
php -C和php-cli,当前工作目录 是相关的,如果两个脚本都驻留在同一目录中,则不相关。__DIR__常量需要大写,顺便说一句。 -
那只是我懒惰。它会给出相同的错误(使用 DIR 时),但会打印出文件的完整绝对路径。
-
你确定
include真的有效吗?如果在 include 中打开失败,它不会像 require 那样是致命错误,并且可能不会显示,具体取决于您的错误报告设置。 -
好吧,随便。您的 PHP 解释器突然停止工作的可能性不大。几乎可以肯定这是某种形式的路径/权限事故。即使有大量附加信息(ls -l、dir struct.、distro、phpinfo,...),如果没有直接访问您的服务器,这也不太可能是可回答的。就让别人看吧。 (如果你真的想调试它,请使用 DBG 或
strace进行一些自省。) -
好电话。我将输出放入 test.php,但它没有显示出来,所以不,include 也不起作用。
标签: php