Использование PhpStorm для удаленной отладки - что-то не совсем правильно - PullRequest
0 голосов
/ 08 октября 2019

Я выполняю следующие шаги для отладки на удаленном сервере:

https://www.jetbrains.com/help/phpstorm/remote-debugging-via-ssh-tunnel.html

Локально я использую MAC Sierra.

В PhpStorm у меня PHP 7.0 какCLI, и это показывает, что Xdebug установлен. В php.ini у меня есть

zend_extension=/usr/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000

phpinfo также показывает, что Xdebug включен.

Под Preferences->Languages->PHP->debug У меня установлен порт 9000 для Xdebug, и Enable remote connections проверено. Я также установил Break at first line, просто чтобы быть уверенным.

У меня также есть туннель SSH и работает через эту команду от моего терминала MAC:

ssh -R 9000:localhost:9000 user@myremotesite.com

, который успешно установил соединение SSH.

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

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

Я чувствую, что что-то упустил.

Идеи?

1 Ответ

3 голосов
/ 08 октября 2019

Если вы используете ssh -R 9000:localhost:9000 user@myremotesite.com, это означает, что сервер / PHP, который вы хотите отлаживать, имеет значение myremotesite.com.

. При этом следующее утверждение неверно:

Теперь, основываясь на инструкциях, я не увидел, что мне нужно делать какие-либо настройки на удаленном сервере.

Вы отлаживаете PHP на удаленном сервере, и это, конечно, то, где вам нужно выполнить настройку. Xdebug живет внутри PHP и, следовательно, должен быть доступен на удаленном веб-сервере.

Параметры, которые необходимо настроить на удаленном сервере, должны быть такими, чтобы он подключался к открытому туннельному порту SSH. Это означает, что хост / порт, к которому должен подключиться Xdebug, равен localhost:9000 и больше не remote_ip. Следовательно, эти настройки должны работать:

xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.remote_host=localhost

Поскольку последние две настройки уже являются настройками по умолчанию, вы можете даже не указывать их и просто использовать xdebug.remote_enable=1.

На случай, если вы захотитечтобы увидеть, что делает Xdebug, также установите xdebug.remote_log=/tmp/xdebug.log. Это будет регистрировать попытки подключения (если они существуют), а также полный обмен данными.

Я перезапустил Apache на моем локальном компьютере

Это также не понадобится, так как вашлокальный Apache не участвует в отладке удаленных запросов (т. е. тех, которые выполняются на Apache myremotesite.com.

...