我有一个使用hhvm在docker容器内运行的php应用程序。
我的IDE是在我的localhost上运行的phpstorm,我设置了xdebug。
int i; int.TryParse("0", out i);
的提升部分如下:
/etc/hhvm/php.ini
在我的nginx conf中,我必须添加指定服务器名称以匹配我的反向代理。反向代理在我的localhost上运行,并将容器的IP(例如; xdebug
hhvm.debug.server_error_message = true
xdebug.enable=1
xdebug.remote_enable=1
xdebug.idekey="PHPSTORM"
xdebug.remote_port = 9999
xdebug.remote_autostart=1
xdebug.remote_connect_back=1
xdebug.remote_handler=dbgp
xdebug.remote_log="/var/log/xdebug/xdebug.log"
)映射到人类可读的127.0.0.1:8080
。
nginx conf条目如下所示:
http://my_app.local
当我向服务器发出请求时,这会让我得到一个有效的xdebug连接。
然而,一旦我使用phpunit从docker容器内部运行单元和功能测试,我也想要一个xdebug会话:
cat nginx/conf.d/my_app.conf
server {
listen 80 default_server;
server_name my_app.local;
root /var/www/my_app/web;
index index.php index.html index.htm;
include hhvm.conf;
error_log /var/log/nginx/sandbox/error.log;
access_log /var/log/nginx/sandbox/access.log main;
location /status {
return 200;
access_log off;
}
location ~/(assets|img|html|src|docs|bower_components|dist)/ {
try_files $uri =404;
}
location / {
try_files $uri /app.php$is_args$args;
}
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; }
}
我怎样才能做到这一点?
答案 0 :(得分:1)
您可以使用此方法:
PHP_IDE_CONFIG="serverName=my_app.local" "XDEBUG_CONFIG="remote_enable=1 remote_host=YOUR_REMOTE_IP idekey=PHPSTORM" ./vendor/bin/phpunit -c tests/phpunit-no-coverage.xml
服务器名称必须添加到phpstorm Langauge&框架> PHP>已配置服务器配置并且必须确保定义了正确的路径映射。
答案 1 :(得分:0)
xdebug.remote_connect_back=1
需要$_SERVER['REMOTE_ADDR']
。尝试明确定义它:
le-docker-container:/var/www/my-app# REMOTE_ADDR="10.0.0.1" ./vendor/bin/phpunit -c tests/phpunit-no-coverage.xml
或更改xdebug配置以改为使用xdebug.remote_host
。