Все советы, которые я вижу, чтобы обойти ошибку 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
Я честно запутался, почему я все еще получаю 502 ошибки.
Я запускал его несколько раз, и он запускался один раз (не было никаких изменений от экземпляров до или после), что показалось мне довольно странным, но только для одной загрузки страницы, и это не было повторяющимся событием.
Изменить: понял одно отличие, когда я открыл другой проект для сравнения. Однажды, когда это сработало, контекстное меню правой кнопки мыши выглядело иначе. Другой проект отлаживается просто отлично. В чем разница? Что дает? Оба проекта используют один и тот же переводчик.
… Также выяснилось, что возвращаясь к рабочему проекту, дополнительный пункт контекстного меню исчез.
Редактировать 2: Все еще проблемы с охотой определенный файлы будут запускаться сразу после запуска PHPStorm и будут иметь это контекстное меню. Другие файлы, однако, не будут при запуске PHPStorm. Если я попытаюсь отладить файл без дополнительного меню, сервер выдаст 502, и тогда у «хороших» файлов не будет дополнительного меню. Если я начну с того, которое сначала имеет дополнительное контекстное меню, оно запустится, хотя, если я последую с одним из них, первый файл перестанет работать. Мне кажется, что я делаю «успехи», но я также все больше сбиваюсь с толку, тем более что каждый раз, когда я пытаюсь запустить другой файл, он спрашивает меня «[x] — конфигурация запуска одного экземпляра. Вы уверены? Вы хотите остановить бегущую? В этот момент я нажимаю «Стоп и Rerun». Я бы подумал, что у тех, кто дает 502, ничего не будет перенесено в «хорошие» файлы, если что-то будет остановлено и перезапущено … но, похоже, это не так.
Изменить 3:
Интересно, может быть, моя настройка интерпретатора может быть плохой, поэтому я схватил securewamp ( http://securewamp.org/en/ ), получил переносную версию, setup, использовал установку по умолчанию с добавленным 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.
Редактировать 8: я думаю, что я, наконец, получаю твердую картину того, когда это работает, а когда нет.
В контекстном меню была красная селедка. Те, у кого нет подменю, будут прекрасно работать при соблюдении условий.
О. Работающий файл (пока еще не замечен образец для рабочих файлов против нерабочих, фактически один рабочий и один нерабочий файл имеют одинаковый код) должен быть выбран.
B. Ни при каких условиях не может «остановить и перезапустить» файл, так как это приведет к тому, что файл впоследствии попадет в неисправный шлюз.
C. Вы не можете открыть нерабочий файл. Если вы это сделаете, текущий сервер зависнет и будет продолжать зависать до тех пор, пока для другого файла не будет выполнена «остановка и повторный запуск», после чего все открытые файлы получат ошибку неверного шлюза. Открытие нерабочего файла приведет к тому, что в настоящее время рабочие файлы получат ошибку неверного шлюза.
D. Чтобы рабочие файлы снова заработали после C или D, требуется перезагрузка системы.
Изменить 9:
Возился с инструментом настройки отладчика validate и, наконец, получил его, чтобы дать мне другой ответ (на мой взгляд, глупо было просто включить целевой каталог в URL скрипта проверки, даже если я думал, что сайт размещается прямо из этого каталога. Ну да ладно. Во всяком случае, была одна ошибка, не уверен, является ли это причиной моих проблем или нет, но буду исследовать ее.
Изменить 10:
Добавление в php.ini для устранения вышеуказанной ошибки …
xdebug.remote_enable = 1
Изменить 11: Никакой реальной выгоды не видно из добавленной строки.
Изменить 12: Публикация запрошенного скриншота браузера
Редактировать 13: Обновления EAP (10.0.2) версии phpStorm. Похоже, результат пока тот же, хотя теперь, по крайней мере, консоль показывает мне ошибку, а не только веб-страницу. Также попытался полностью запустить через apache-сервер SecureWAMP, чтобы выяснить, есть ли что-то, что мешает мне отказаться от каталога htdocs по умолчанию.
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.
Обновление — возможное исправление: поэтому, хотя мой файл php.ini имеет настройку max_execution_time, я попытался посмотреть на настройки интерпретатора php, как описано в эта страница поддержки PhpStorm, шаги 1 и 2. Там мое max_execution_time было 0. Итак, я добавил для него настройку с использованием пользовательского интерфейса на этой странице, чтобы он был таким же, как 300 у меня в php.ini. (Затем я закрыл и снова открыл PhpStorm — большую паранойю старого программиста.) До сих пор я видел одно плохое сообщение шлюза на моей «худшей» странице, но даже оно запускалось во второй раз. Другие, кажется, все бегут к завершению. Я сделаю некоторое бдительное ожидание и посмотрю, поможет ли это «исправление» в долгосрочной перспективе.
(И прежде, чем кто-либо почувствует необходимость указать на это: да, кэширование запросов — ужасная идея для автоматических тестов. Нужно исправить это — но только после того, как я выясню, как увеличить время ожидания интерпретатора, чтобы мои тесты могли успешно выполняться без кэширования.)
Это не дает прямого ответа на вопрос, но может быть полезно людям, спотыкающимся об ошибке 502 Bad Gateway.
Еще один способ получить 502 Неверный шлюз Ошибка — это когда php-скрипты выдают слишком много ошибок / предупреждений / уведомлений. У меня был скрипт, который генерировал тысячи уведомлений из-за неинициализированных переменных, которые привели бы к 502 Неверный шлюз ошибка.
Одним из решений является исправление кода php, генерирующего эти уведомления, или, наоборот, отключение отчетов о уведомлениях в php.ini
файл путем добавления & ~E_NOTICE
к error_reporting
установка.
Например
error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE