ubuntuにeclipse+PDTでCakePHPデバッグ環境

Posted by joeartsea on 2009-04-30

ubuntuにeclipse on PDTでCakePHPプロジェクトをデバッグする環境を構築します。

  • ubuntu 8系
  • xampp for Linux 1.7.1
  • eclipse 3.4
  • CakePHP 1.2

eclipseはホームディレクトリに、xamppは/optにダウンロード&展開しました。パッケージ管理(apt及びそのフロントエンドのSynaptic)でもインストールできますが、eclipseはパッケージ管理で入れるとプラグイン追加時にエラーでまくりでいちいち対処するのが面倒でした。

まずはxampp for Linuxから。

XAMPP for Linuxからtarボールをダウンロード。/optに展開。xamppを起動。

1
2
sudo tar zxvf xampp-linux-1.7.1.tar.gz -C /opt
sudo /opt/lampp/lampp start

僕の環境ではMySQLがすんなり起動しませんでした。XAMPP for LinuxでMySQLが起動しない場合の修正→xamppを再起動で解決。

1
2
3
4
sudo vim /opt/lampp/bin/mysql.server
$bindir/mysqld_safe --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 &
$bindir/mysqld_safe <span style="color: #ff0000;">--user=root</span> --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 &

PHPの文字化け対策。

1
2
3
4
5
sudo vim /opt/lampp/etc/php.ini
#[mbstring]の下に以下を追加
mbstring.internal_encoding = auto
mbstring.http_input = auto
mbstring.http_output = auto

MySQLの文字化け対策。

1
2
3
4
sudo vim /opt/lampp/etc/my.cnf
#[mysqld]の下に以下を追加
default-character-set=utf8
skip-character-set-client-handshake

utf-8に統一してxamppを再起動。

続いてPHPにZendデバッガーを設定。ZendDebuggerから最新のものをダウンロードして展開。xampp1.7.1のPHPは5.2系なので展開した中から「5_2_x_comp」ディレクトリを使います。xamppのlibディレクトリに専用のディレクトリを作成しコピー。

1
2
3
4
sudo mkdir /opt/lampp/lib/zend
sudo mkdir /opt/lampp/lib/zend/5_2_x
cd デスクトップ/ZendDebugger-5.2.15RC1-linux-glibc23-i386/5_2_x_comp
sudo cp ZendDebugger.so /opt/lampp/lib/zend/5_2_x/ZendDebugger.so

php.iniにコピーしたファイルを読み込む設定。

1
2
3
4
5
6
sudo vim /opt/lampp/etc/php.ini
#最終行に以下を追加
[Zend]
zend_extension=/opt/lampp/lib/zend/5_2_x/ZendDebugger.so
zend_debugger.allow_hosts=127.0.0.1
zend_debugger.expose_remotely=always

phpinfoでZend debuggerが表示されれば設定完了。

あと、そのままではmod_rewriteが効かなかった。mod_rewriteは有効だったがAllowOverride Noneになってて.htaccessが効かない状態でした。Ubuntuでapacheのmod_rewriteを有効にするを見て修正してxamppを再起動。

1
2
3
4
5
6
7
sudo vim /opt/lampp/etc/httpd.conf
<Directory /var/www/>
...
# AllowOverride None コメントアウトして以下を追加
AllowOverride All
...
</Directory>e

最後にマシン起動時、自動的にxamppが起動するように設定。

1
2
3
sudo vim /etc/rc.local
#exit 0の上に以下を追加
/opt/lampp/lampp start

次にeclipse。

Synapticでsun-java6-jdkをインストール。

eclipse PDTからAll-In-One PDT x.x (Linux x86/GTK 2)をダウンロードしてホームディレクトリに展開してPleiadesで日本語化。Eclipse + PDTのインストールが解りやすい。

CakePHPプロジェクト毎にサブドメインを設定。まずはhttpd.confにhttpd-vhosts.confを読み込む設定。

1
2
sudo vim /opt/lampp/etc/httpd.conf
Include etc/extra/httpd-vhosts.conf #コメントアウト解除

バーチャルホストの設定。xampleはホスト名。project1, project2はそれぞれのプロジェクト名。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
sudo vim /opt/lampp/etc/extra/httpd-vhosts.conf
NameVirtualHost *:80 #コメントアウト解除
<VirtualHost *:80>
ServerAdmin [email protected].com
DocumentRoot /opt/lampp/htdocs/xampp
ServerName xampp.example
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected].com
DocumentRoot /home/user1/workspace/project1
ServerName project1.example
ErrorLog logs/project1.example-error_log
CustomLog logs/project1.example-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected].com
DocumentRoot /home/user1/workspace/project2
ServerName project2.example
ErrorLog logs/project2.example-error_log
CustomLog logs/project2.example-access_log common
</VirtualHost>

最後にhostsファイルをいじる。

1
2
3
sudo vim /etc/hosts
#127.0.0.1 localhost の下に以下を追加
127.0.0.1 example xampp.example project1.example project2.example

PHPデバッグ構成の設定。

  • eclipseを起動してメニュー「ウィンドウ」→「パースペクティブを開く」→「PHP」
  • メニューが切り替わって「実行」→「デバッグの構成」
  • 左リストの「PHP Web ページ」を右クリックで「新規」
  • 名前「project1」(任意)、サーバ・デバッガ「Zend デバッガー」
  • PHP サーバーで「新規」→名前「project1」、URL「http://project1.example
  • ファイル「/project1/index.php」、「最初の行でブレーク」のチェックを外す
  • 最後のURLは「自動生成」のチェックを外し右側の欄に「/」だけ入力
  • project2も別の設定で同じように入力する

画像付きで解りやすいのは【CakePHP】Eclipse+PDT+Xdebugを使ったデバッグ方法について、画面付でまとめみる。デバッガがXdebugなのとサブディレクトリ運用な点がこちらの記事とは違います。(僕の環境ではサブディレクトリ運用はブレークポイントで止まりませんでした)