WT-NMP - PHP-CGI случайно останавливается без журнала ошибок
Мы недавно установили WT-NMP и в настоящее время запускаем Php-Cgi с php 5.4.24.
Мы запускаем довольно простые php-скрипты и при тестировании все работает нормально.
В выходные мы хотели, чтобы сервер работал и тестировал его в течение более длительного периода времени. Сервер и скрипты работали нормально весь день в пятницу, но в субботу поздно вечером php-cgi перестал работать.
В журнале ошибок нет ошибок (C:\WT-NMP\log). В конфигурации (php.ini) у меня установлены следующие параметры: error_reporting = E_ALL display_errors = On display_startup_errors = On log_errors = On html_errors = On error_log = "c:/wt-nmp/log/php_error.log"
У нас также есть стандартные журналы ошибок nginx.conf: access_log "c:/wt-nmp/log/nginx_access.log"; error_log "c:/wt-nmp/log/nginx_error.log" warn;
Итак, поскольку каталог журнала пуст, я предполагаю, что запущенные сценарии php и общие операции nginx не вызывают остановку php-cgi.
Итак, мои вопросы: что еще может заставить php-cgi перестать работать? Существуют ли другие способы регистрации, которые мы могли бы включить, которые могли бы помочь нам отследить это? Есть ли другие местоположения журнала, на которые мы должны смотреть?
Спасибо!
4 ответа
Как разработчик WT-NMP, я могу вам сказать, что WT-NMP - это стек разработки Windows, и его не следует использовать на производственных серверах.
Php-cgi может остановиться по многим причинам (ОС, память, сеть), не связанным с вашим PHP-кодом. На производственных серверах Linux есть менеджер процессов (php-fpm), который отслеживает / перезапускает / регистрирует такие сбойные процессы. Диспетчер серверов WT-NMP не делает этого (пока).
Нет никаких директив конфигурации, которые могли бы помочь вам исследовать эту проблему. Любое расследование должно начинаться на уровне ОС.
В качестве обходного пути, в conf/php.ini вы должны увеличить memory_limit, отключить все ненужные / нестабильные расширения php, особенно xcache, xdebug и opcache
Обновление: последняя версия WT-NMP теперь отслеживает и перезапускает сбойные процессы php-cgi.
Следующая настройка отлично работает для Windows 2012 R2 Server!!!
Панель управления-> Система-> Расширенные настройки системы-> Дополнительно-> Переменные среды-> Системные переменные-> Создать-> Имя переменной: PHP_FCGI_MAX_REQUESTS & Значение переменной: 0
Что еще может заставить php-cgi перестать работать?
Это вызвано ошибками в PHP. php-cgi не очень хорошо поддерживается.
Существуют ли другие способы регистрации, которые мы могли бы включить, которые могли бы помочь нам отследить это? Есть ли другие местоположения журнала, на которые мы должны смотреть?
Нету. Вы можете найти что-то в журнале событий Windows. Бежать windbg
с php-dev-sdk
(отладочные символы). http://www.windbg.org/
Если вы что-то нашли, приложите полную трассировку отладки и сообщите об ошибке по адресу https://bugs.php.net/report.php
это проблема, связанная с
«Распространяемый пакет Visual C++ устанавливает Microsoft C и C++»
В зависимости от версии PHP у вас должна быть совместимая версия платформы Windows.
в моем случае PHP 8 не работал, пока я не установил
«Visual Studio 2015, 2017, 2019 и 2022»
по этой ссылке:https://aka.ms/vs/17/release/vc_redist.x64.exe