当我使用以下代码时:
<?
print_r($_SERVER);
?>
我从所有服务器变量中获得了一个很好的列表。但是,当我在脚本中输入相同的代码时,Cron选项卡会调用该代码,但未列出许多变量。此外,Document_root变量没有值。
移动到其他服务器后,我才遇到此问题。我是否需要调整一些服务器设置以避免这种情况?
答案 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)将不可用。