it-swarm.com.ru

502 Неверный шлюз PHP Шторм, но интерпретатор и исполняемый файл установлены

  • ОС: Windows 7 - 64 бит 
  • PHP: автономный php.exe (версия PHP 5.5) 
  • PHPStorm Версия: 10.0.1

Все советы, которые я вижу, чтобы обойти ошибку 502 Gateway в PhpStorm, касаются только того, чтобы убедиться, что у вас есть ваш интерпретатор и набор исполняемых файлов. Я использую автономный php.exe ( http://windows.php.net/download#php-5.5 VC11 x86 Thread Safe (2015-Oct-01 01:25:56)) и у меня все установлено до PHP 5.5

 enter image description here

Я честно запутался, почему я все еще получаю 502 ошибки.

Я запускал его несколько раз, и он запускался один раз (не было никаких изменений от экземпляров до или после), что показалось мне довольно странным, но только для одной загрузки страницы, и это не было повторяющимся событием.

Правка: понял одно отличие, когда я открыл другой проект для сравнения. Однажды, когда это сработало, контекстное меню правой кнопки мыши выглядело иначе. Другой проект отлаживается просто отлично. В чем разница? Что дает? Оба проекта используют один и тот же переводчик. 

... Также обнаружилось, что возвращаясь к рабочему проекту, пропал дополнительный пункт контекстного меню.

 enter image description here

Правка 2: По-прежнему проблемы с поиском ... обнаружил, что некоторые файлы будут работать сразу же после запуска PHPStorm и будут иметь это контекстное меню. Другие файлы, однако, не будут при запуске PHPStorm. Если я попытаюсь отладить файл без дополнительного меню, сервер выдаст 502, и тогда у «хороших» файлов не будет дополнительного меню. Если я начну с того, которое сначала имеет дополнительное контекстное меню, оно запустится, хотя, если я последую с одним из них, первый файл перестанет работать. Мне кажется, что я делаю "успехи", но я также все больше сбиваюсь с толку, тем более что каждый раз, когда я пытаюсь запустить другой файл, он спрашивает меня "[x] - конфигурация запуска одного экземпляра. Вы уверены? Вы хотите остановить бегущую? В этот момент я нажимаю «Стоп и Rerun». Я бы подумал, что у тех, кто дает 502, ничего не будет перенесено в «хорошие» файлы, если что-то будет остановлено и перезапущено ... но, похоже, это не так.

Правка 3: Интересно, может быть, моя настройка интерпретатора может быть плохой, поэтому я схватил securewamp ( http://securewamp.org/en/ ), получил переносную версию, установил, использовал настройки по умолчанию с добавленным xdebug на (эта версия: php_xdebug-2.4.0rc1-5.4-vc9.dll) и точно такая же проблема. 

Я даже в потере дополнительных вещей, чтобы проверить.

Правка 4: Очень уверен, что это что-то в PHPStorm сейчас. Один из файлов php, который никогда не работал, я открыл прямо с php.exe, и он работал нормально. Это должен быть какой-то параметр в phpstorm, который я пропустил, или какая-то неработающая функция.

Правка 5: по следу потенциальных причин, попробуйте инструмент Run> Validate Debugger. Путь и URL оставлены по умолчанию (нет причин их менять), и попытка проверки результатов приводит к появлению сообщения «Пожалуйста, проверьте, правильно ли настроен веб-путь к сценарию проверки» и перечисляет мой каталог.

Правка 6: Проверка выполнялась только на 127.0.0.1, потому что это то, на чем работал SecureWAMP. Отключение сервера приводит к «не удалось выполнить сценарий проверки:« Соединение отказано: соединение ».

Правка 7: Как указывает LazyOne, мои файлы на первом изображении имеют два разных типа файлов (php и html). Я сделал это с помощью файлов .php с обеих сторон, я просто взял два файла, над которыми я сейчас работаю, для скриншота. Вот пример одного из php's .  enter image description here

Правка 8: Я думаю, что я наконец-то получил твердый образец того, когда он работает, а когда нет .. В контекстном меню была красная селедка. Те, у кого нет подменю, будут прекрасно работать при соблюдении условий.

  • О. Файл, который работает (пока еще не замечен шаблон для рабочих файлов против нерабочих, фактически один рабочий и один нерабочий файл имеют одинаковый код), должен быть выбран.

  • B. Ни при каких условиях не может «остановить и перезапустить» файл, так как это приведет к тому, что файл впоследствии попадет в неисправный шлюз.

  • C. Вы не можете открыть нерабочий файл. Если вы это сделаете, текущий сервер зависнет и будет продолжать зависать до тех пор, пока для другого файла не будет выполнена «остановка и повторный запуск», после чего все открытые файлы получат ошибку неверного шлюза. Открытие нерабочего файла приведет к тому, что в настоящее время рабочие файлы получат ошибку неверного шлюза.

  • D. Чтобы рабочие файлы снова заработали после C или D, требуется перезагрузка системы.

Правка 9: Возился с инструментом настройки отладчика validate и, наконец, получил его, чтобы дать мне другой ответ (на мой взгляд, глупо было просто включить целевой каталог в URL скрипта проверки, даже если я думал, что сайт размещается прямо из этого каталога. Ну да ладно. Во всяком случае, была одна ошибка, не уверен, является ли это причиной моих проблем или нет, но исследую ее.  enter image description here

Правка 10: Добавление в php.ini для устранения вышеуказанной ошибки ... Xdebug.remote_enable = 1

Правка 11: Никакой реальной выгоды не видно из добавленной строки.Изменить 12: Размещение запрошенного скриншота браузера .

  enter image description hereПравка 13: Обновления EAP (10.0.2) версии phpStorm. Похоже, результат пока тот же, хотя теперь, по крайней мере, консоль показывает мне ошибку, а не только веб-страницу. Также попытался полностью запустить через сервер Apache SecureWAMP только для того, чтобы узнать, что есть что-то, что мешает мне отказаться от каталога htdocs по умолчанию. 

.

  enter image description here

11
liljoshu

FWIW, я думаю, что это может быть так же просто, как проблема тайм-аута. 

Моя среда очень похожа на OP, Win764, PhpStorm 10.0.4, PHP 5.5.27.

У меня есть несколько автоматических тестов F3, где я часто вижу ошибку 502 Bad Gateway, когда запускаю тестовый код «в браузере», используя один из маленьких значков на панели инструментов, который всплывает в правом верхнем углу моего кода. (См. Изображение ниже.)

На некоторых моих тестовых страницах ошибка появляется впервые. Запускать один раз, не удается, запустить снова, работает нормально. Другие, кажется, требуют 2 или 3 пробега, прежде чем они будут работать. Но у меня есть пара, которую я никогда не видел в браузере.

OTOH, если я щелкну правой кнопкой мыши в окне кода для любой из этих страниц и отладлю, код работает нормально, независимо от того, позволяю ли я выполнять его полностью или проходить по строкам.

Понятно, что мои настройки инструмента не ошибаются. Некоторые тесты можно запускать из браузера каждый раз.

Я думаю, что тесты с вероятностью неудачи выполняют довольно тяжелые запросы к БД. И мой интерпретатор php настойчиво истекает мои запросы, когда я запускаю их в браузере. 

Но каждый раз, когда страница запускается и время ожидания истекает, один или несколько ее запросов кэшируются, и в следующий раз, когда я запускаю ее, страница работает быстрее. В конце концов, для тех, кто будет работать вообще, достаточно кэш-памяти, чтобы страница могла попасть под провод и закончить до истечения срока.

Так что это моя теория. Чего я не нашел, так это где и как изменить интервал ожидания переводчика. То есть интервал времени ожидания при запуске из PhpStorm. У меня уже есть

max_execution_time = 300

в моем файле php.ini и вижу, что он установлен, когда я использую phpinfo (). Но я должен верить, что он переопределяется, когда интерпретатор запускается из PhpStorm.

Update - возможное исправление: поэтому, несмотря на то, что в моем файле php.ini есть настройка max_execution_time, я попытался просмотреть настройки моего интерпретатора php, как описано на на этой странице поддержки PhpStorm , шаги 1 и 2. Там мое max_execution_time было 0. Итак, я добавил для него настройку с использованием пользовательского интерфейса на той же странице, чтобы он был таким же, как 300 в моем php.ini. (Затем я закрыл и снова открыл PhpStorm - большую паранойю старого программиста.) До сих пор я видел одно плохое сообщение шлюза на моей «худшей» странице, но даже оно запускалось во второй раз. Другие, кажется, все бегут к завершению. Я сделаю некоторое бдительное ожидание и посмотрю, поможет ли это «исправление» в долгосрочной перспективе. 

(И прежде, чем кто-либо почувствует необходимость указать на это: да, кэширование запросов - ужасная идея для автоматических тестов. Нужно исправить это - но только после того, как я выясню, как увеличить время ожидания интерпретатора, чтобы мои тесты могли успешно выполняться без кэширования.)

 enter image description here

2
Anne Gunn

Это не дает прямого ответа на вопрос, но может быть полезно людям, спотыкающимся об ошибке 502 Bad Gateway.

Другой способ получить 502 Bad Gateway error - это когда php-скрипты выдают слишком много ошибок/предупреждений/уведомлений. У меня был сценарий, который генерировал тысячи уведомлений из-за неинициализированных переменных, которые могли привести к ошибке 502 Bad Gateway .

Одним из решений является исправление php-кода, генерирующего эти уведомления, или, наоборот, отключение отчетов о уведомлениях в файле php.ini путем добавления & ~E_NOTICE в настройку error_reporting.

Например

error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
0
0xced