$_SERVER['DOCUMENT_ROOT'] 在命令行 PHP 中不起作用。我该如何解决?
$_SERVER['DOCUMENT_ROOT'] does not work in command-line PHP. How do I fix this?
我能够在 Web 浏览器中访问 PHP 页面 没有错误 并且可以正常工作。 (错误显示激活)
但是当我想通过 SSH 访问 PHP 页面时,我遇到了一些错误。
PHP Warning: include_once(/app/config.php): failed to open stream: No such file or directory in /home/example/public_html/app/cron/cronMin.php on line 7
SSH 命令:
/usr/local/cwp/php71/bin/php -d max_execution_time=18000 -q /home/example/public_html/app/cron/cronMin.php
cronMin.php
:
<?php
use Carbon\Carbon;
ini_set('memory_limit', '3G');
ini_set('max_execution_time', 180);
include $_SERVER['DOCUMENT_ROOT'] . '/app/config.php';
...
这是什么原因?
PHP 7.4 - Apache、Nginx 和 Varnish
The entries in this array are created by the web server.
当运行在命令行上宁PHP时,不涉及web服务器,即没有$_SERVER['DOCUMENT_ROOT']
。
如果您的脚本必须 运行 与 CLI SAPI 和网络服务器 SAPI 相同,请不要依赖此类变量。要包含其他 PHP 脚本,请改用 __DIR__
magic constant:
// cronMin.php is in the "app/cron" directory, this will be the value of __DIR__ as an absolute path
include __DIR__ . '/../config.php';
我能够在 Web 浏览器中访问 PHP 页面 没有错误 并且可以正常工作。 (错误显示激活)
但是当我想通过 SSH 访问 PHP 页面时,我遇到了一些错误。
PHP Warning: include_once(/app/config.php): failed to open stream: No such file or directory in /home/example/public_html/app/cron/cronMin.php on line 7
SSH 命令:
/usr/local/cwp/php71/bin/php -d max_execution_time=18000 -q /home/example/public_html/app/cron/cronMin.php
cronMin.php
:
<?php
use Carbon\Carbon;
ini_set('memory_limit', '3G');
ini_set('max_execution_time', 180);
include $_SERVER['DOCUMENT_ROOT'] . '/app/config.php';
...
这是什么原因?
PHP 7.4 - Apache、Nginx 和 Varnish
The entries in this array are created by the web server.
当运行在命令行上宁PHP时,不涉及web服务器,即没有$_SERVER['DOCUMENT_ROOT']
。
如果您的脚本必须 运行 与 CLI SAPI 和网络服务器 SAPI 相同,请不要依赖此类变量。要包含其他 PHP 脚本,请改用 __DIR__
magic constant:
// cronMin.php is in the "app/cron" directory, this will be the value of __DIR__ as an absolute path
include __DIR__ . '/../config.php';