Прежде чем вы продолжите читать - проблема была исправлена
Ну ... это довольно странно.
Я работаю над веб-приложением для некоторые друзья. У меня есть рабочая версия, загруженная на их хостинг, и неожиданно она перестала работать через пару дней. go.
Я ничего не добавил и ничего не изменил на сервере. Нет ошибки, просто приложение перестало загружаться, вместо этого загружается пустая страница html.
Я проследил проблему до файла /vendor/composer/autoload_real.php.
В конце класса stati c внутри этого файла есть al oop, в который включены несколько других файлов (фактически запрашиваемых), я проверил это, когда он пытается запросить / vendor / laravel / framework /src/Illuminate/Foundation/helpers.php, система останавливается. Очевидно, я проверил, что файл там, и он не был затронут.
Ну, я уверен, что я ничего не изменил в этой части приложения (это базовая структура и я обычно не путаюсь внутри), но вдруг он перестал работать.
Рабочая копия на моем компьютере просто отлично работает. Я загрузил свою копию помощников. php, но ничего не изменилось.
Кто-нибудь недавно сталкивался с подобными проблемами? У кого-нибудь есть идеи о том, как это исправить?
РЕДАКТИРОВАТЬ: Прошло несколько дней, так как я мог проверить это в последний раз. Теперь я отслеживаю выполнение php в файле /vendor/laravel/framework/src/Illuminate/Foundation/helpers.php. Я начал выводить сообщения и пытаться выполнить только этот файл, чтобы увидеть, где остановлено выполнение кода.
Я знаю, что это очень дерьмовая отладка, но у меня нет доступа к apache, и я не могу перезапустить его, и, кажется, нет простого способа получить код ошибки без этого.
Так терпеливо пытаясь, я достиг двух точек, где выполнение этого файла останавливается:
Создание фабричного метода
if (! function_exists('factory')) {
/**
* Create a model factory builder for a given class, name, and amount.
*
* @param dynamic class|class,name|class,amount|class,name,amount
* @return \Illuminate\Database\Eloquent\FactoryBuilder
*/
function factory()
{
$factory = app(EloquentFactory::class);
$arguments = func_get_args();
if (isset($arguments[1]) && is_string($arguments[1])) {
return $factory->of($arguments[0], $arguments[1])->times($arguments[2] ?? null);
} elseif (isset($arguments[1])) {
return $factory->of($arguments[0])->times($arguments[1]);
}
return $factory->of($arguments[0]);
}
}
и создание метода микширования
if (! function_exists('mix')) {
/**
* Get the path to a versioned Mix file.
*
* @param string $path
* @param string $manifestDirectory
* @return \Illuminate\Support\HtmlString|string
*
* @throws \Exception
*/
function mix($path, $manifestDirectory = '')
{
return app(Mix::class)(...func_get_args());
}
}
В обоих случаях задействован func_get_args ... У меня нет указанной ошибки c, но у меня есть покалывание, что проблема в некоторой степени связана с тем, что эта функция ничего не возвращает.
РЕДАКТИРОВАТЬ 2: Хорошо, я попробовал php artisan и composer команды, предложенные для ответов безуспешно. Проблема все еще существует.
Я также удалил журналы и проверил, что при попытке загрузить сайт не было создано никакого нового журнала.
Я пробовал чистую laravel установку от scriptaculous на новый каталог (я сделал это, когда впервые загрузил сайт, он отлично работал в течение нескольких месяцев), и эта новая установка также не попадает на первую страницу. Вместо этого отображается пустая страница (на Firefox) или ошибка 500 (на Chrome).
Я забыл упомянуть важные данные. Мое приложение делит пространство с экземпляром WordPress. WordPress установлен на public_ html, а мой сайт на public_html / mySiteDirectory. Это не предполагает никаких проблем, кроме как заставить меня слегка подправить файл .htaccess, чтобы маршрутизация работала нормально.
Существует также разделенное пространство форума phpbb в его собственном каталоге внутри public_ html.
Интересно, мог ли какой-нибудь из них быть несколько обновлен и привести к такому странному результату?
Также ... laravel app_debug включен в файл .env с самого начала, но ничего не показывал. Кажется, это что-то, что терпит неудачу до полной загрузки laravel framework.
РЕДАКТИРОВАТЬ 3: ЭТО ИСПРАВЛЕНО.
Ну ... во-первых, позвольте мне Спасибо за вашу помощь. На самом деле не было ни одного ответа, который бы решал проблему, но многие из вас предлагали использовать phpInfo () для проверки php версии, что в конечном итоге привело к истинной проблеме.
Да ... удивительно, хотя php -v на терминале показал, что php 7.2 работает на сервере, а инструменты управления cpanel php показали также, что php 7.2 установлен и работает, когда я использовал phpInfo (); php 5,6 было показано в ответе.
Я использовал собственные инструменты cpanel для обновления / понижения до 7.3 и снова до 7.2 и et voilá phpInfo (); показывает 7.2, и страница снова запущена и работает.
Я постараюсь разделить награду между несколькими ответами (не знаю, возможно ли что-то подобное), и буду +1 каждый ответ, предлагая phpInfo (); как это было показано в качестве ключа к решению этой проблемы.
Если я не могу разделить награду, я приму в качестве окончательного ответа ответ «Не пани» c, поскольку именно он убедил меня в том, что возникла проблема с php версиями.