I got started with CodeIgniter, and I later found out that it's designed to not work well with debuggers. There are CodeIgniter forum posts dating as far back as 2007 where you can get instructions on how to patch the source code and tweak the config files so that query string (GET params) work, which XDebug and Zend Debugger both need to work. I spent hours trying to debug with Aptana PHP (plugin 1.0 and 1.1 Beta) and Eclipse PDT, and failed. I decided to trash a framework so backwards as CodeIgniter.
How to
If you don't want to install Zend Platform (the paid PHP server), it may not be much too intuitive how to hit the ground running with a sample Zend Framework project and be able to debug it. Here's who I finally managed. (I use Ubuntu 9.04)
- Install Zend CE, the free Zend Community Edition server, as explained in http://files.zend.com/help/Zend-Server-Community-Edition/deb_installation.htm
wget http://repos.zend.com/deb/zend.key -O- | sudo apt-key add -
sudo aptitude update
sudo apt-get install zend-ce
Add PHP to your path:
sudo ln -s /usr/local/zend/bin/php /usr/local/bin/php
- Install Zend Studio for Eclipse from http://www.zend.com/en/products/studio/downloads. I used Studio 6.1. Zend Studio is not free! It costs $400 and comes with a 30-day trial. You can try also with Eclipse PDT, which is the free (scaled-down) version of Studio.
- Download the project Zend Quickstart and unzip it. I renamed my directory zend-quickstart. We'll call the root <path to project's root>
php scripts/load.sqlite.php --withdata
chmod -R a+rwX data
- Counter intuitively, the Debug command in Zend Studio doesn't actually deploy your project to the PHP server, so you need to do that yourself. By default the document root for Zend CE is /var/www
Now you can access the project at http://localhost/myprojecturl
- Back in Studio, go to Run==>Debug Configurations. Configure this:
Server Debugger: Zend Debugger
Click PHP Server Configure. Go to Path Mapping tab, and Add:
* Path on Server: myprojecturl
* Local path: /zend-quickstart
Make sure the URL generated is correct. Should be /myprojecturl/public/index.php
- Cool! Click the Debug button now, and the debugger should be stopped at the first line of the index.php script. Breakpoints should work.