Разработкой на PHP давно не занимался.Так как в ближайшее время предстоит поддерживать проект PHP, то при развертывании среды разработки часто возникают ошибки.Если код можно отладить, то будет очень удобно решить проблему . Поэтому на основе phpstorm + xdebug была настроена отлаживаемая среда разработки.В течение этого периода я также запрашивал и ссылался на процессы настройки многих других людей и обнаружил, что многие из них были не очень интуитивными или имели упущения. Теперь задокументируйте мои шаги по настройке здесь.
1. Установите php+xdebug+nginx
brew install php71
brew install php71-memcached #项目需要,不需要可以不安装
brew install php71-xdebug
brew install nginx
2. Настройте nginx
vim ~/homebrew/etc/nginx/servers/drone.conf
# 常规配置,可根据自己项目调整
server {
listen 80;
# 按自己的需要配置访问的域名
server_name drone-dev.husor.com;
root /data/wwwroot/drone/;
location ~* \.php {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
3. Настройте phpstorm+xdebug
- Выберите «Редактировать конфигурации» в правом верхнем углу проекта phpstorm...
- Создайте новое веб-приложение PHP, такое как мой дрон здесь
- Нажмите кнопку после сервера, чтобы создать новый сервер, например, мой nginx здесь
- Откройте «Настройки» phpstorm, выберите по очереди «Языки и рамки» > «PHP» и настройте ранее установленный php.
Щелкните ссылку, чтобы открыть файл xdebug.ini.
[xdebug]
; 默认zend_extension路径已经配置好了
zend_extension="/Users/xxx/homebrew/opt/php71-xdebug/xdebug.so"
xdebug.idekey="macgdbp"
xdebug.remote_enable=1
xdebug.profiler_enable=1
xdebug.remote_host="127.0.0.1"
xdebug.remote_port=9001
xdebug.remote_handler="dbgp"
Порт отладки совпадает с remote_port в xdebug.ini.
4. Запустите php+nginx
sudo brew services start nginx
brew services start php71
# 如果已经启动过的,就重启
5. Отладьте код
- Нажмите кнопку отладки в правом верхнем углу проекта.
- остановился в точке останова
Сама настройка не сложная Проблема, с которой я столкнулся, заключалась в том, что порт отладки не был настроен, а удаленный_порт был неправильно настроен. Зная эти два момента, можно в принципе добиться успеха один раз