Netbeans + Xdebug + php not working

前端 未结 8 2165
故里飘歌
故里飘歌 2020-12-18 01:41

My netbeans does not work the breakpoints using xdebug, my configuration looks correct, so I configured the first time I ran up to stop debugging the first time since then h

8条回答
  •  离开以前
    2020-12-18 02:20

    Here's how I was able to get it to work w/ mulitple PHP-FPM homebrew installations.

    I used this excellent article for the multiple installations:

    https://echo.co/blog/os-x-1010-yosemite-local-development-environment-apache-php-and-mysql-homebrew

    In the comments of that post you'll see recommended how to install xdebug, bottom line:

    brew install php56-xdebug
    

    You have to install xdebug for each verions of PHP you have installed. Homebrew will make a xdebug.ini file for each version of php you installed. Each will have a path like:

    /usr/local/etc/php//conf.d/ext-xdebug.ini
    

    This article installs DNSMasq which runs on xdebug's default port (9000), so you'll need to change the xdebug port to something else (9001 works fine.)

    Edit the above mentioned ext-xdebug.ini file (or files if you installed more than one version of php.) Here's what works for me:

    [xdebug]
    zend_extension="/usr/local/opt/php56-xdebug/xdebug.so"
    
    ; General config
    ; Dumps local variables on exception
    xdebug.show_local_vars=On
    ; Dump server variables
    xdebug.dump.SERVER=*
    ; Dump global variables
    xdebug.dump_globals=On
    xdebug.collect_params=4;
    
    ; Tracing
    ;xdebug.auto_trace=On
    ;xdebug.trace_output_dir= /opt/local/php_traces/
    xdebug.show_mem_delta=On
    xdebug.collect_return=On
    
    
    ; Debugging. You might need to specify your host with some additional options
    xdebug.remote_enable=1
    : from http://devzone.zend.com/1147/debugging-php-applications-with-xdebug/
    xdebug.remote_host="localhost"
    xdebug.remote_port=9001
    xdebug.remote_handler="dbgp"
    

    The first two lines are all that is in the original homebrew file.

    BTW - when I installed multiple PHP versions, this ext-xdebug.ini file was only created for the first PHP version I installed. I simply copied this file to the other PHP version locations, and changed the "php56-xdebug" part of the path in line 2 to reflect the proper php version.

    Notice "xdebug.remote_port=9001"

    Then in Netbeans (I'm using 8.02 Mac osX10.10.3) I use the following settings. Go to Preferences->PHP->Debugging

    Debugger Port: 9001

    Stop at First Line: (unchecked)

    Watches & Balloon Evaluation: (checked - there's a warning but it works fine for me.)

    Also worth noticing is that in order for xdebug to show up using phpinfo() (or command line php -i) I need to restart apache with:

    launchctl unload -Fw ~/Library/LaunchAgents/homebrew.mxcl.php56.plist
    
    sudo apachectl restart
    
    launchctl load -Fw ~/Library/LaunchAgents/homebrew.mxcl.php56.plist
    

    For some reason my setup requires me to run this every time I startup. Kind of a pain, but I incorporated it in a shell command to easily switch between versions.

    One more hint: part of brew info php56 says:

    OS X 10.8 and newer come with php-fpm pre-installed, to ensure you are using
    the brew version you need to make sure /usr/local/sbin is before /usr/sbin
    in your PATH:
    
      PATH="/usr/local/sbin:$PATH"
    

    Until I added this to my .profile_bash file, changes I made to each version's php-fpm.conf file were not recognized. Everything else seemed to work so it was confusing.

    Hope this saves someone else time & trouble.

提交回复
热议问题