Laravel - $ _SERVER ['DOCUMENT_ROOT'] пусто при выполнении заданий в очереди? - PullRequest
0 голосов
/ 22 сентября 2019

В некоторых моих файлах у меня есть такие строчки:

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'] пуст.Я на MAC с Сьеррой.Может быть, есть какие-то настройки, которые я пропустил?

1 Ответ

2 голосов
/ 22 сентября 2019

Задания в очереди выполняются в фоновом режиме, поэтому $_SERVER['DOCUMENT_ROOT'] пусто, так как это путь, полученный из директивы веб-сервера

Также объясняется, почему он пуст при запуске Artisan CLI

Вы можете запросить файл, используя base_path вместо

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

Вот разница в Artisan Tinker

~/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"
...