laravel - 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 上。也许我忽略了一些设置?
解决方案
排队的作业在后台运行,所以$_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"
推荐阅读
- postgresql - 同一查询中的多个递归引用
- git - 如何找出我的存储是否已经在某个地方提交?
- sql - SQL - UTC 日期时间转换
- postgresql - 如何使用条件和 SUM 从 2 个现有表中创建新表?
- django - 将 ManyToManyFiled 与相应的模型 API 链接
- angularjs - 如何在表达式中执行函数?
- python - python继承:使用参数选择父类
- javascript - 如何在 oracle apex 19.1 中覆盖页面验证的错误消息?
- angular - TypeError: Object(...) is not a function when using ngbModule
- reactjs - 有没有办法处理发送到前端 url 的 post 请求,但是在 heroku 上的 expressjs 服务器中处理