2016-10-11 5 views
0

У меня есть PhpStorm 10.0.3 и попытка отладки скрипта CLI, который выполняется на удаленном сервере.XDebug с PhpStorm: отладка сценария CLI, подключение по обратному туннелю SSH

У меня есть обратный туннель SSH, настроенный с моей локальной машины на удаленный сервер.

Xdebug Удаленный сервер настроен следующим образом:

# /etc/php5/apache2/conf.d/20-xdebug.ini 
# /etc/php5/cli/conf.d/20-xdebug.ini 
zend_extension=xdebug.so 
xdebug.remote_enable=true 
xdebug.idekey=PHPSTORM 
xdebug.remote_host=127.0.0.1 
xdebug.remote_port=9000 

Я пытаюсь запустить скрипт так:

php -dxdebug.remote_autostart=On /var/www/index.php 

PhpStorm вкладки отладки получить раскрылись (иногда это серый цвет), но не запрашивает, чтобы я исправлял сопоставления файлов, он не открывает отлаживаемый файл и не указывает на линию точки останова. Выполнение сценария удаленного сервера блокируется до тех пор, пока я не удалю вручную сеанс отладки. enter image description here

Когда я отлаживать над Apache2 с помощью параметра GET:

?XDEBUG_SESSION_START=1 

отладки работает отлично, и я получаю приглашение исправить файл отображения.

Любая идея, почему это так?

я учился ниже, но это не решает мою проблему: https://confluence.jetbrains.com/display/PhpStorm/Debugging+PHP+CLI+scripts+with+PhpStorm (Вопрос: Как мой сценарий должен теперь, что отладка должна начинаться без набора настроек remote_autostart В зеленом намеке они говорят, что это не является обязательным.)

и XDebug: how to debug remote console application? (Re: Установка удаленного_хоста в переменной XDEBUG_CONFIG на внешний IP-адрес моего локального компьютера [проверка скопированного фрагмента bash], похоже, не работает. Мой локальный компьютер недоступен через внешний IP-адрес, он доступен только через обратный SSH)

export XDEBUG_CONFIG="remote_host=$(echo $SSH_CLIENT | awk '{print $1}') idekey=PHPSTORM" 
+0

Просто мысль. На удаленном сервере у вас может быть установлено два разных php, которые вы вызываете в cli, а один связан с apache. Убедитесь, что php, используемый apache (php5_module 'libphp5.so'), тот же, что и в cli, и в конечном итоге исправить файлы php.ini, если это так. Например, php5, например, используйте свой собственный. – YvesLeBorg

+0

У вас есть SFTP-доступ к этому хосту? Если это так - вы можете запускать/отлаживать такой скрипт CLI через SSH непосредственно из IDE (просто используйте Remote PHP Interpreter и SFTP для развертывания). https://confluence.jetbrains.com/display/PhpStorm/Remote+debugging+in+PhpStorm+via+SSH+tunnel – LazyOne

+1

1) * «Как мой скрипт должен теперь начать отладку без набора настроек remote_autostart?«* Вы можете попробовать с параметром« изменить свой код »- просто поместите« xdebug_break(); »в свой код (программная точка останова - также инициирует сеанс отладки). 2) Попробуйте использовать порт 9001 для обмена сообщениями xdebug (в вашем case - порт на стороне сервера, локально PhpStorm все еще может использовать 9000). TCP 9000 на сервере может быть уже занят php-fpm (стандартный порт для этого инструмента), и в этом случае отладочное соединение прекращается почти мгновенно, поскольку оно не отвечает ожидаемым выходом (протокол отладки). – LazyOne

ответ

1

Здесь было 2 проблемы. Как и в комментарии @LazyOne, произошел столкновение портов с сервисом PHP5-FPM. В моем случае я отключил его, так как конфигурация сервера клиента не использует FPM в любом случае.

Я также должен был экспортировать переменную PHP_IDE_CONFIG на удаленном хосте:

export PHP_IDE_CONFIG="serverName=serverNameInPHPStorm" 

Этот хост настроенная на стороне PhpStorm (Настройки/Настройки | Языки & Каркасы | PHP | Servers). Мне также пришлось сопоставить корневую папку проекта с удаленным расположением пути сервера, так как они отличаются между моей локальной/dev-машиной и удаленным.