首页 > 解决方案 > Laravel - 运行排队作业时 $_SERVER['DOCUMENT_ROOT'] 为空?

问题描述

在我的一些文件中,我有这些行:

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

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

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

因此,就好像从工匠那里执行的事情$_SERVER['DOCUMENT_ROOT']是空的。我在与 Sierra 的 MAC 上。也许我忽略了一些设置?

标签: laravelmacos-sierra

解决方案


排队的作业在后台运行,所以$_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"

推荐阅读