【问题标题】:PHP $_SERVER['DOCUMENT_ROOT'] is empty when called from a Cron Tab从 Cron Tab 调用 PHP $_SERVER['DOCUMENT_ROOT'] 时为空
【发布时间】:2011-08-20 12:49:49
【问题描述】:

当我使用以下代码时:

<?
print_r($_SERVER);
?>

我从所有服务器变量中得到了一个很好的列表。但是,当我在脚本中输入相同的代码(由 Cron Tab 调用)时,很多变量都没有列出。此外,Document_root 变量没有值。

我只是在移动到不同的服务器后才遇到这个问题。我是否需要调整一些服务器设置来避免这种情况?

【问题讨论】:

    标签: php


    【解决方案1】:

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

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

    define('PUBLIC_PATH', '/var/www/path/to/public');
    
    // OR something like:
    
    define('PUBLIC_PATH', dirname(__DIR__) . '/public');
    

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

    【讨论】:

    • +1 - “不总是设置”可以更精确地表达:当您通过命令行界面运行 PHP 时,它不存在。
    • @Pekka 这就是答案!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-06-01
      • 1970-01-01
      • 2013-08-12
      • 2011-12-13
      • 2011-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多