Intereting Posts
Неустранимая ошибка: допустимый размер памяти в PHP при распределении меньше Замечание PHP: Неопределенный индекс, хотя использование try \ catch Файлы cookie CodeIgniter, работающие в FF, но не Chrome или IE Два сайта WordPress, использующие разные темы в одной базе данных пользовательский файл php.ini в подпапке, вызывающий проблемы с переменными $ _SESSIONS Переменная PHP pass для включения В DDD и CQRS для запросов на чтение, что такое стратегия, которая позволяет использовать интерфейсы и простое тестирование? Behat Mink webdriver сеанс уничтожается после каждой функции в наборе Как выбрать отдельный запрос с помощью построителя запросов symfony2? как включить sqlite3 для php? Guzzle 6: не более json () метод ответов Как перенаправить старые «уродливые» URL-адреса на seo-friendly? Как управлять автозагрузкой зависимостей PHP Простой HTML DOM Parser, как получить TR только из первой таблицы Изображение не загружается для некоторых страниц по умолчанию.

Служба Php Artisan требует фатальной ошибки после обновления php7

После обновления php с 7.0.14 до 7.0.26 php artisan serve подает эту ошибку

Предупреждение: Неизвестно: не удалось открыть поток: нет такого файла или каталога в Unknown в строке 0 Неустранимая ошибка: Неизвестно: Не удалось открыть окно «/Applications/XAMPP/xamppfiles/htdocs/school-dashboard/public/server.php» (include_path = '.:') в Unknown в строке 0

Хорошо, после нескольких часов вытягивания волос я наконец выяснил, в чем проблема.

В laravel 4 php artisan serve это под капотом

 <?php namespace Illuminate\Foundation\Console; use Illuminate\Console\Command; use Symfony\Component\Console\Input\InputOption; class ServeCommand extends Command { public function fire() { $this->checkPhpVersion(); chdir($this->laravel['path.base']); $host = $this->input->getOption('host'); $port = $this->input->getOption('port'); $public = $this->laravel['path.public']; $this->info("Laravel development server started on http://{$host}:{$port}"); passthru('"'.PHP_BINARY.'"'." -S {$host}:{$port} -t \"{$public}\" server.php"); } } 

Это по существу это в простой php: php -S 127.0.0.1:8000 -t public serve.php – см. Документы для php, встроенных в сервер, для получения дополнительной информации .

И это сработало хорошо и dandy перед php 7.0.26, где последний параметр для встроенного сервера php -S был изменен на флаг, так что вы должны вызвать его, как этот php -S 127.0.0.1:8000 -t public -f serve.php .

Если вы хотите обслуживать его с помощью php artisan serve вам придется переопределить ServeCommand и изменить последнюю строку метода fire() на это:

passthru('"'.PHP_BINARY.'"'." -S {$host}:{$port} -t \"{$public}\" -f server.php");

Или вы можете изменить его непосредственно в ServeCommand , но если вы сделаете обновление или установку композитора, вам придется сделать это снова.