从Cron选项卡调用时,PHP $ _SERVER ['DOCUMENT_ROOT']为空

时间:2011-08-20 12:49:50

标签: php

当我使用以下代码时:

<?
print_r($_SERVER);
?>

我从所有服务器变量中获得了一个很好的列表。但是,当我在脚本中输入相同的代码时,Cron选项卡会调用该代码,但未列出许多变量。此外,Document_root变量没有值。

移动到其他服务器后,我才遇到此问题。我是否需要调整一些服务器设置以避免这种情况?

2 个答案:

答案 0 :(得分:5)

最好不要依赖这个变量,因为它并不总是被设置(就像你发现的那样)。

尝试设置并使用这样的常量:

define('PUBLIC_PATH', '/var/www/path/to/public');

// OR something like:

define('PUBLIC_PATH', dirname(__DIR__) . '/public');

现在使用PUBLIC_PATH代替$_SERVER['DOCUMENT_ROOT']

答案 1 :(得分:0)

当您通过cron执行时,您只是调用php myscript.php还是通过http访问php脚本?如果您通过http直接执行,则apache变量(例如DocumentRoot)将不可用。