【发布时间】:2011-08-20 12:49:49
【问题描述】:
当我使用以下代码时:
<?
print_r($_SERVER);
?>
我从所有服务器变量中得到了一个很好的列表。但是,当我在脚本中输入相同的代码(由 Cron Tab 调用)时,很多变量都没有列出。此外,Document_root 变量没有值。
我只是在移动到不同的服务器后才遇到这个问题。我是否需要调整一些服务器设置来避免这种情况?
【问题讨论】:
标签: php
当我使用以下代码时:
<?
print_r($_SERVER);
?>
我从所有服务器变量中得到了一个很好的列表。但是,当我在脚本中输入相同的代码(由 Cron Tab 调用)时,很多变量都没有列出。此外,Document_root 变量没有值。
我只是在移动到不同的服务器后才遇到这个问题。我是否需要调整一些服务器设置来避免这种情况?
【问题讨论】:
标签: php
最好不要依赖这个变量,因为它并不总是被设置(就像你发现的那样)。
尝试设置并使用这样的常量:
define('PUBLIC_PATH', '/var/www/path/to/public');
// OR something like:
define('PUBLIC_PATH', dirname(__DIR__) . '/public');
现在使用PUBLIC_PATH 代替$_SERVER['DOCUMENT_ROOT']
【讨论】:
当你通过 cron 执行时,你只是调用 php myscript.php 还是通过 http 访问 php 脚本?如果您直接通过 http 执行,则 apache 变量(例如 DocumentRoot)将不可用。
【讨论】: