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

Ric*_*ick 2 php

当我使用以下代码时:

<?
print_r($_SERVER);
?>
Run Code Online (Sandbox Code Playgroud)

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

我搬到不同的服务器后才遇到这个问题.我是否需要调整一些服务器设置以避免这种情况?

adl*_*son 5

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

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

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

// OR something like:

define('PUBLIC_PATH', dirname(__DIR__) . '/public');
Run Code Online (Sandbox Code Playgroud)

现在使用PUBLIC_PATH而不是$_SERVER['DOCUMENT_ROOT']

  • +1 - "并不总是设置"可以更精确地表达:当您通过命令行界面运行PHP时,它不存在. (6认同)