Laravel-运行排队的作业时$ _SERVER ['DOCUMENT_ROOT']为空?

时间:2019-09-22 16:11:52

标签: laravel macos-sierra

在某些文件中,我有以下几行内容:

require_once($_SERVER['DOCUMENT_ROOT'].'/../vendor/stripe/stripe-php/init.php');

通常一切都很好。现在,我正在运行一些排队的作业,并且看到以下错误:

  

无法打开所需的'/../vendor/stripe/stripe-php/init.php'   (include_path ='。:/ usr / local / php5 / lib / php')在   /Library/WebServer/Documents/mysite/app/Somemodel.php:9

从工匠$_SERVER['DOCUMENT_ROOT']开始执行的事情好像是空的。 我在与Sierra互访。也许我忽略了某些设置?

1 个答案:

答案 0 :(得分:2)

排队的作业在后台运行,因此$_SERVER['DOCUMENT_ROOT']为空,因为它是从Web服务器指令中检索到的路径

它也解释了为什么在运行Artisan CLI时它为空

您可以改为使用base_path来请求文件

require_once base_path() . '/vendor/stripe/stripe-php/init.php';

这是工匠修补匠的区别

~/Sites/laravel (master ✗) ✹ ★ ᐅ  tinker
Psy Shell v0.9.9 (PHP 7.3.9-1~deb10u1 — cli) by Justin Hileman
>>> require_once base_path() . '/vendor/stripe/stripe-php/init.php';
=> true
>>> require_once $_SERVER['DOCUMENT_ROOT'] . '/vendor/stripe/stripe-php/init.php';
PHP Fatal error:  Failed opening required '/vendor/stripe/stripe-php/init.php' in Psy Shell code on line 1
>>> $_SERVER['DOCUMENT_ROOT']
=> ""
>>> base_path()
=> "/home/caddy/Sites/laravel"