#.htaccess #phpstorm #xdebug #putty #portforwarding
#.htaccess #phpstorm #ошибка xdebug #замазка #перенаправление портов
Вопрос:
Я хочу использовать Xdebug специально для функции пошаговой отладки в PhpStorm. Я использую Xdebug в своих личных приложениях просто отлично, без переадресации портов. Однако моя текущая проблема связана с приложением на серверах, на которых у меня нет прав администратора для работы с файлами php.ini и 20-xdebug.ini. Я хочу использовать Xdebug, настроив .htaccess, для которого у меня «есть» разрешение на запись в каталоге /public . Я считаю, что моя проблема заключается в том, что у нас есть сервер посередине, называемый сервером перехода, и я думаю, что мои конфигурации неверны.
X-debug установлен на веб-сервере, но в настоящее время отключен. Я включаю его с помощью .htaccess в папке /public . ОН не включит его в системе из-за того, что сервер используется многими разработчиками. Я единственный, кто использует Xdebug для приложения, над которым я работаю.
Установлен Xdebug.
<pre>
developer@****:~$ php --version
PHP 7.2.24-0ubuntu0.18.04.6 (cli) (built: May 26 2020 13:09:11) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.24-0ubuntu0.18.04.6, Copyright (c) 1999-2018, by Zend Technologies
with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans
</pre>
Файлы конфигурации PHP:
<pre>
developer@****:~$ php --ini
Configuration File (php.ini) Path: /etc/php/7.2/cli
Loaded Configuration File: /etc/php/7.2/cli/php.ini
Scan for additional .ini files in: /etc/php/7.2/cli/conf.d
Additional .ini files parsed: /etc/php/7.2/cli/conf.d/10-mysqlnd.ini,
...
/etc/php/7.2/cli/conf.d/20-xdebug.ini,
...
</pre>
Конфигурации .htaccess:
<pre>
developer@****:~$ cat /www/1234-5678/public/.htaccess
zend_extension=xdebug.so
php_flag xdebug.remote_enable=1
php_flag xdebug.remote_autostart on
php_flag xdebug.remote_connect_back=1
php_flag xdebug.remote_port=9000
php_flag xdebug.max_nesting_level=512
php_flag xdebug.remote_host="192.168.10.1"
PHP_flag xdebug.idekey=PHPSTORM
</pre>
Установленные конфигурации Xdebug:
<pre>
developer@****:~$ cat /etc/php/7.2/cli/conf.d/20-xdebug.ini
zend_extension=xdebug.so
</pre>
С этим набором…
Вот как я подключаюсь к веб-серверу: ПК> PuTTY SSH для подключения к серверу перехода> SSH сервера перехода на сервер по порту # и localhost (ssh -p #### localhost)
Я настроил PuTTY:
<pre>
Session -
Host Name (or IP address) - fake.jumpserver.com
Port: 22
Connection > SSH > Tunnels
Source Port: 7008
Destination: 192.168.240.100:22008
</pre>
Как только я открою соединение PuTTY, я могу использовать команду для ssh в локальный порт 7008 (удаленный порт 192.168.240.100: 22008).
<pre>
developer@lenovo MINGW64 ~
$ ssh -p 7008 localhost
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 5.3.0-1017-aws x86_64)
...
Last login: Fri Jan 15 18:09:05 2021 from 192.168.240.100
developer@****:~$ cd /www/app/1234-5678/public
developer@****:/www/app/1234-5678$ pwd
/www/app/1234-5678/public
</pre>
Конфигурации PhpStorm:
Конфигурации SSH, успешное тестирование соединения!
<pre>
Name: Port_22008_SSH
Host: localhost
Port: 7008
Username: developer
Local port: --dynamic
Authentication type: Key pair OpenSSh or PuTTY
Private key file: C:...developer.sshid_rsa
Passphrase: *****
</pre>
Сборка, выполнение, развертывание:
<pre>
Connection -
Name: Port_22008_SFTP
Type: SFTP
SSH Configuration: Port_22008_SSH
Test Connection: Success
Root path: /www/app/1234-56789
Web server URL: https://1234-56789.fakewebsitelink.com
Mappings -
Local path: C:UsersdeveloperPhpstormProjectscontracts1234-5678
Deployment path: /
Web path: /
</pre>
Языки и фреймворки
<pre>
PHP language Level: 7.2
CLI Interpreter: Port_22008_CLI(7.2.24-0ubuntu0.18.04.6)
<pre>
Name: Port_22008_CLI
SSH Configuration: Port_22008_SSH
PHP Executable: /usr/bin/php
</pre>
Path mappings: Project-root->/www/app/1234-5678
</pre>
Теперь к проверке конфигураций отладчика
Языки и фреймворки> Отладка
<pre>
Path to create validation script: C:UsersdeveloperPhpstormProjectscontracts1234-5678
Deployment Server: Port_22008_SFTP
</pre>
Отладчик включен в браузере
Файл журнала Idea:
INFO - eyprovider.OpenSSHKeyV1KeyFile - Ключевая пара зашифрована с помощью: aes256-ctr, bcrypt, [0, 0, 0, 16, 59, -84, -66, -121, 47, 63, 91, -99, -127, 88, -125, -126, -39, -126, 70, -9, 0, 0, 0,16] ПРЕДУПРЕЖДЕНИЕ - net.schmizz.concurrent.Обещание -> пробуждение: ошибка открытия канала "сеанс": открыть не удалось INFO - .channel.direct.SessionChannel - запросит подсистему sftp INFO - eyprovider.OpenSSHKeyV1KeyFile - Ключевая пара зашифрована с помощью: aes256-ctr, bcrypt, [0, 0, 0, 16, 59, -84, -66, -121, 47, 63, 91, -99, -127, 88, -125, -126, -39, -126, 70, -9, 0, 0, 0,16] INFO - on.PhpRemoteWebServerValidator - Создать файл '/ www/app/1234-5678/_intellij_phpdebug_validator .php' INFO - on.PhpRemoteWebServerValidator - Загрузка сценария проверки на Порт_22008_SFTP завершена за 1 секунду, 45 мс: передан 1 файл (5,8 кбит / с) ПРЕДУПРЕЖДЕНИЕ.Сбой проверки веб-сервера PhpWebServerValidator из-за: "Ошибка запроса с кодом состояния 404" INFO - eyprovider.OpenSSHKeyV1KeyFile - Ключевая пара зашифрована с помощью: aes256-ctr, bcrypt, [0, 0, 0, 16, 59, -84, -66, -121, 47, 63, 91, -99, -127, 88, -125, -126, -39, -126, 70, -9, 0, 0, 0,16] INFO - on.PhpRemoteWebServerValidator - Удалить файл '/ www/app/1234-5678/_intellij_phpdebug_validator .php' ПРЕДУПРЕЖДЕНИЕ - .AbstractProgressIndicatorBase - этот индикатор выполнения не определен, это может привести к визуальной несогласованности. Пожалуйста, вызовите setIndeterminate(false) перед началом выполнения. com.intellij.ide.util.Делегирование ProgressIndicator.setFraction(делегирование ProgressIndicator.java:78) INFO - on.PhpRemoteWebServerValidator - Очистка ... завершена за 138 мс: удален 1 элемент
Комментарии:
1. Что ж, проверьте журнал доступа в вашем Apache — какой URL запрашивается, и проверьте, существует ли такой файл там, когда происходит такой запрос. Вы также можете проверить
idea.log
возможные детали (Help | Show Log in...
) — возможно, потребуется включить дополнительное ведение журнала: intellij-support.jetbrains.com/hc/en-us/articles /…2. Хм. Хорошее предложение. В idea.log не так много информации. Похоже, что на сервере нет журнала доступа, хранящегося в типичном каталоге apache2, не удается его найти и не удается выполнить общесистемный поиск из-за разрешения. Тьфу. Обновите мой пост журналами idea.
3. 1)
/www/app/1234-5678/_intellij_phpdebug_validator.php
— попробуйте поместить свой собственный файл (толькоphpinfo()
в нем) с похожим именем файла и попробуйте вызвать его через браузер — сработает ли это? Насколько я понимаю, его следует вызывать черезhttps://1234-56789.fakewebsitelink.com/_intellij_phpdebug_validator.php
URL. Возможно, это потому, что это HTTPS (маловероятно, но все возможно) 2) Какое дополнительное ведение журнала вы включили в PhpStorm? Просто развертывание? Попробуйте также включить Debugging/ PHP (я надеюсь, что в нем также будет указан URL-адрес).