2016-08-23 56 views
3

我想按照這個教程調試與PhpStorm一個Symfony的應用程序: https://gist.github.com/chadrien/c90927ec2d160ffea9c4調試Symfony2的在泊塢窗與PhpStorm和Xdebug

我做了完全一樣的,但它不能很好地工作。

php-fpm: 
    build: ./php 
    container_name: php-fpm-symfony 
    links: 
     - db 
    ports: 
     - 9000:9000 
     - 8448:8448 
     - 8000:8000 
    working_dir: /var/www/html/ 
    volumes: 
     - ../:/var/www/html 
    volumes_from: 
     - data 
    tty: true 
    env_file: 
     - ./docker.env 
    environment: 
     XDEBUG_CONFIG: remote_host=192.168.0.176 

Dockerfile

# XDEBUG 
RUN yes | pecl install xdebug \ 
    && echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \ 
    && echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \ 
    && echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/xdebug.ini 

當我啓動與PhpStorm調試,好像連接正在發生。在我的瀏覽器中彈出一個新窗口。我的Symfony主頁在這裏。 但它不停止在我的斷點上。並且逐步調試不起作用。

我做錯了什麼?

+0

截圖,請(即「彈出」窗口;你的「PHP |服務器」等)。到目前爲止,它聽起來像錯誤的路徑映射... – LazyOne

+0

您使用的是什麼碼頭機解決方案?基於像dockertoolbox或docker-for-mac的虛擬機?這是最關鍵的一點。另外,暴露9000:9000根本沒有意義 –

+0

@EugenMayer我使用docker for mac。我正在公開9000,因爲我在'nginx'中使用'php-fpm' – Kevin

回答

3

用docker-for-mac暴露9000是錯誤的 - 你的方向不對。

IDE,PHPstorm,監聽端口9000,這意味着它打開這個9000上的套接字,它不會連接到這個端口。

另一方面,xdebug通常連接到本地主機的端口9000,如果它找到一個監聽器,它們就會說話。這是因爲在9000上沒有服務,轉發端口不僅沒有意義,而且實際上也會損害你,因爲端口9000將在OSX主機本地主機上運行,​​並且PHP風暴將不再能夠監聽它。

你想要做什麼是

  1. 刪除 '9000:9000'
  2. 使用此配置https://gist.github.com/EugenMayer/3019516e5a3b3a01b6eac88190327e7c到 一)創建一個別名爲您的OSX本地主機迴環設備 B)配置FPM Xdebug的到connect_back到這個IP
  3. 現在,很簡單,只要你按這個按鈕https://drive.google.com/file/d/0B3SrxyqujSqxeFZoMmdrbDB6SzQ/view所以它沒有這個「紅色圖標」上面,但它都是綠色的。 4)現在使用你的瀏覽器,使用Xdebug的插件,像往常一樣像https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc或Firefox的替代品,因爲你真的不希望在Xdebug的配置使用「自動」,我想

這就是它,它

    由於回送設備別名
  1. 移植到其他開發設備
  2. 你不需要配置調試ENV,而是使用快速調試是,幾乎在所有的情況下,更方便
0

另一個答案是正確的,你必須刪除端口部分的- 9000:9000

另一個問題是您的碼頭容器需要知道碼頭主機的IP地址。這是正確的端口9000連接到。

自2017年6月發佈docker 17.06以來,您可以在運行docker容器中使用docker.for.mac.localhost DNS條目。

你可以添加另一回聲線,以用於安裝Xdebug的運行聲明:

&& echo "xdebug.remote_host=docker.for.mac.localhost" >> /usr/local/etc/php/conf.d/xdebug.ini \