Сброс соединения Laravel после любых изменений файла
Я тестировал larave l 4.2 в локальной среде (windows 10) для тестирования, но получаю ошибку сброса соединения после обновления любых файлов.
Мой проект загрузится, и сервер правильно отобразит мои страницы. Однако, если я обновляю файл (например, индекс) и затем пытаюсь получить доступ к странице, которая отображает только что обновленный файл, я всегда получаю ошибку сброса соединения. Даже такое простое изменение, как период.
Еще интереснее то, что когда я использую php artisan для обслуживания своих файлов, у меня никогда не возникает проблема сброса соединения. Если я захожу на страницу через ремесленника, он работает, и тогда внезапно xampp захочет работать, но только после того, как я однажды загрузил страницу из ремесленника.
Если я снова внесу изменения в файл, мне придется повторить этот процесс.
Локальная настройка
Мой проект размещается локально из xampp (v 3.2.2) со следующей конфигурацией v-hosts. Файлы hosts также были правильно настроены.
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/myproject/public"
ServerName myproject.local
ServerAlias myproject.local
ErrorLog "logs/myproject.log"
CustomLog "logs/custom.myproject.log" combined
<Directory "C:/xampp/htdocs/myproject/public">
AllowOverride All
Require all granted
</Directory>
Короче говоря: я изменяю файл, я получаю сброс соединения на xampp при попытке доступа к этой странице. Я просматриваю страницу от ремесленника и затем обновляю страницу на xampp, внезапно, это работает.
Обновить
Я пробовал альтернативы, такие как ларагон, предложенный Лукасом, но та же ошибка сохраняется. После обновления любого файла при попытке доступа к этой странице я получаю ошибку сброса соединения.
Я нашел больше информации, глядя на журнал Apache в Ларагоне.
[Вт. 01 марта 08:52:22.785519 2016] [mpm_winnt:note] [pid 6748:tid 544] AH00428: Родитель: дочерний процесс 8276 завершен со статусом 3221225725 - перезапуск. [Вт. 01 марта 08:52:22.928687 2016] [ssl:warn] [pid 6748:tid 544] AH01909: www.example.com:8443:0 сертификат сервера НЕ содержит идентификатор, соответствующий имени сервера [вт. 01 08:52:22.938712 2016] [mpm_winnt:note] [pid 6748:tid 544] AH00455: Apache/2.4.17 (Win32) OpenSSL/1.0.2d PHP/5.6.16 настроен - возобновление нормальной работы [вторник, 01 08: 52: 22.938712 2016] [mpm_winnt: уведомление] [pid 6748:tid 544] AH00456: Сервер Apache Lounge VC11 построен: 13 октября 2015 10:54:13 [вт. 01 08: 52: 22.938712 2016] [ядро: уведомление] [pid 6748:tid 544] AH00094: Командная строка: 'C:\\laragon\\bin\\apache\\apache-2.4.17/bin/httpd -d C:/laragon/bin/apache/apache-2.4.17' [Вт. 01 марта 08:52:22.939695 2016] [mpm_winnt:note] [pid 6748:tid 544] AH00418: Родитель: Создан дочерний процесс 3672 [Вт. 01 08:52:23.214917 2016] [ssl:warn] [pid 3672:tid 532] AH01909: www.example.com:8443:0 сертификат сервера НЕ включает идентификатор, соответствующий имени сервера [вт. 01 01:52:23.296629 2016] [ssl:warn] [pid 3672:tid 532] AH01909: www.example.com:8443:0 сертификат сервера НЕ содержит идентификатор, соответствующий имени сервера [вт. 01 01:52:23.306647 2016] [mpm_winnt:note] [pid 3672:tid 532] AH00354: дочерний: Запуск 64 рабочих потоков. [Вт. 01 марта 08:52:24.159843 2016] [mpm_winnt:note] [pid 6748:tid 544] AH00428: родитель: дочерний процесс 3672 завершен со статусом 3221225725 - перезапуск. [Вт. 01 марта 08:52:24.305896 2016] [ssl:warn] [pid 6748:tid 544] AH01909: www.example.com:8443:0 сертификат сервера НЕ содержит идентификатор, соответствующий имени сервера [вт. 01 08:52:24.315916 2016] [mpm_winnt:note] [pid 6748:tid 544] AH00455: Apache/2.4.17 (Win32) OpenSSL/1.0.2d PHP/5.6.16 настроен - возобновление нормальной работы [вторник, 01 08: 52: 24.315916 2016] [mpm_winnt: примечание] [pid 6748:tid 544] AH00456: Сервер Apache Lounge VC11 построен: 13 октября 2015 10:54:13 [вторник, 01 08: 52: 24.315916 2016] [ядро: уведомление] [pid 6748:tid 544] AH00094: Командная строка: 'C:\\laragon\\bin\\apache\\apache-2.4.17/bin/httpd -d C:/laragon/bin/apache/apache-2.4.17' [Вт. 01 марта 08:52:24.317905 2016] [mpm_winnt:note] [pid 6748:tid 544] AH00418: Родитель: Создан дочерний процесс 3600 [Вт. 01 08:52:24.580068 2016] [ssl:warn] [pid 3600:tid 552] AH01909: www.example.com:8443:0 сертификат сервера НЕ содержит идентификатор, соответствующий имени сервера [вт. 01 01:52:24.666114 2016] [ssl:warn] [pid 3600:tid 552] AH01909: www.example.com:8443:0 сертификат сервера НЕ включает идентификатор, соответствующий имени сервера [вт. 01 01:52:24.675120 2016] [mpm_winnt:note] [pid 3600:tid 552] AH00354: дочерний: Запуск 64 рабочих потоков.
3 ответа
Эта проблема была наконец решена с изменением конфигурации с Apache.
Добавьте следующее в файл httpd.conf:
<IfModule mpm_winnt_module>
ThreadStackSize 8888888
</IfModule>
Затем перезагрузите.
Проблема в том, что в Windows по умолчанию размер стека меньше, чем в системах Linux/Unix. Мне понадобилось время, чтобы понять это. Apache тихо зависал, и я не получал ошибок в своих журналах, что затрудняло его отслеживание.
Проект, над которым я работаю, имеет большие вызовы регулярных выражений, и, очевидно, это был известный триггер, вызывающий эту проблему с apache на windows. Если вы посмотрите на документацию apache, мы можем обновить ThreadStackSize до значения, более близкого к системам Unix/Linux размером 8 МБ.
http://httpd.apache.org/docs/2.2/mod/mpm_common.html
Я надеюсь, что это поможет любому, кто разрабатывает в системе Windows работает Apache в качестве локального сервера. Это было большой головной болью в течение некоторого времени.
php artisan serve
использовать PHP на сервере (php -S localhost:80 -t public
) разместить приложение.
Возможно, проблема может быть в вашей конфигурации apache, поэтому попробуйте это:
# define DOCROOT variable
define DOCROOT "C:/xampp/htdocs"
<Directory "${DOCROOT}">
AllowOverride All
Require all granted
</Directory>
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/myproject/public/"
ServerName myproject.dev
</VirtualHost>
если проблема не устраняется, попробуйте использовать Laragon и всегда открывайте его как администратор.
Открытие журнала ошибок php может помочь вам найти реальную проблему. в моих кодах произошла ошибка (использование isset() непосредственно для функции)