Ubuntu 16.04をインストールしてからPHPのデバッグができるまで

Pocket

Ubuntu 16.04上でPHPのデバッグができる環境を整えました。手順をまとめます。

Apache2のインストール

まずはApache2のインストールから。

$ sudo apt install apache2
$ sudo a2enmode userdir

a2enmodeでuserdirを有効にします。これで、ホームディレクトリのpublic_htmlディレクトリを公開できるようになります。作ったディレクトリが/home/hoge/public_htmlだと、

http://localhost/~hoge/で、public_html以下が公開されます。

PHPのインストール

次は、PHPのインストール。

$ sudo apt install php libapache2-mod-php

/etc/apache2/mods-available/php7.0.confのphp_admin_flag engine Offをコメントアウト。これで、上で設定したpublic_html内でPHPが使えるようになります。

MySQLのインストール

次にMySQLのインストール。

$ sudo apt install mysql-server mysql-client

実は、最初mariadb-serverとmariadb-clientをインストールしたのだけれど、rootのパスワードが設定されずアクセスできませんでした。バグのようなのでMySQLに変更しました。

ところが、MariaDBをアンインストールして、MySQLをインストールしようとしてもエラーでできません。こちらの情報に従って完全に設定ファイルを削除した後でインストールできました。

Uninstall MySQL completely

PDOのインストール

PHPからMySQLにアクセスするPDOをインストールします。

$ sudo apt install php-mysql

$ sudo service apache2 restart

上述のようにuserdirを使える状態で、/home/hoge/public_html/index.phpに

<?php
phpinfo();

と書いたファイルを作って、http://localhost/~hoge/でアクセスして、PDOのところにmysqlとドライバが表示されていればOKです。

Javaをインストール

PHPのデバッグにNetBeansを使えればと思い、Javaをインストール。

$ sudo apt-add-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt install oracle-java8-installer

NetBeansをインストール

NetBeansは、PHPを使えるものをダウンロードしてインストールしました。

$ sudo sh ./netbeans-8.1-php-linux.sh

インストール先は、/usr/localではなくてホームディレクトリの中にしました。

日本語のインライン変換ができないときは、以下のようにFcitxの設定をするとうまくいきます。変換候補が離れたところに表示されるので今一つですけど。

Fcitx tips

xdebugをインストール

NetBeansで、PHPをデバッグするためにxdebugをインストールします。

$ sudo apt install php-xdebug

これでインストールはできるのですが、動かすために設定が必要になります。
xdebug.iniにzend_extensionしか設定されていないので、xdebug.remote_enable=1とxdebug.remote_autostart=1、xdebug.idekey="netbeans-xdebug"の3行を付け加えます。
remote_enableは、NetBeansでデバッグするときに必要になります。htmlからphpを呼び出すときなど、2つのファイルにまたがるときはidekeyが必要になります。
、remote_autostartは、後述するVisual Studio Codeでデバッグするときに必要になりました。
/etc/php/7.0/mods-available/xdebug.ini

zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.idekey="netbeans-xdebug"

これで、上述のhttp://localhost/~hoge/にアクセスしてphpinfo()の結果を見ます。xdebugのremote_eanbleがOnになっていればOKです。

もし、Onになっていなければ、/etc/php/7.0/apache2/conf.d/20-xdebug.iniがあるかどうか確認してください。20-xdebug.iniは/etc/php/7.0/mods-available/xdebug.iniのシンボリックリンクになっているはずです。Apache2が設定を読み込んだ場合、phpinfo()のAdditional .ini files parsedという欄に20-xdebug.iniを読んだことが表示されています。

NetBeansでデバッグできることを確認

NetBeansを起動して、ホームディレクトリのpublic_html内にテストプロジェクトを作ります。ソースコードには、phpinfo();を入れます。ブレークポイントを設定して、デバッグを開始。ブレークできれば成功です。

phpinfo()で、xdebugのremote_enableがOnになっていれば、たぶん何も設定しなくても動くと思います。

Visual Studio Codeをインストール

せっかくなので、Visual Studio Codeをインストールしてみます。

code_1.4.0-1470329130_amd64.debをダウンロードして、Gnome ファイルから右クリックして「ソフトウェアのインストールで開く」でインストールしました。

Visual Studio技術情報にある、Visual Studio Code Preview ファースト ステップ ガイド (PDF: 5.9 MB)をダウンロードしてみると、インストールや簡単な使い方が載っています。日本語で読めます。

Ubuntuの場合、ターミナルでcodeと打つと起動します。

PHPのextensionをインストールします。左側のビューバーの上から5番目にある拡張機能を選択。ボックスにPHPを打ち込んでextensionを検索します。

PHP DebugとPHP,Perl,Asm,Bash Code Formatをインストールしました。コードのフォーマッタは、PHP Code Formatもあるのですが、PHPのファイルで?>で閉じるとタブがスペースに変換されなかったり、8カラムになったり不具合がありました。PHP Debugのほうが、xdebugを使うのに重要です。

あとは、コードの中にブレークポイントを設定して、左のビューバーの4番目のデバッグのモードに切り替えます。左上のStart Debuggingという緑色のボタンを押してからブラウザでファイルをアクセスしてみるとブレークします。NetBeansと違って手動でサイトにアクセスしないと勝手にデバッグが始まらないです。エディターと統合環境の違いかなと思います。

もし動かないときは、phpinfo()のxdebugの欄でremote_enableがOnになっていること、remote_autostartがOnになっていることを確認しましょう。

実際にVisual Studio Codeでデバッグしてみましたが、1度フリーズした他は快適に使えました。ソースコードのオートフォーマットなどはNetBeansの方が細かく設定できていいですけれど、高機能なエディタと思えば、デバッグもできるしいいかなと思いました。

ただ、Intellisenseは動いているのですが、よい候補があまり出てこなくてコード補完はあまり使えませんでした。ちょっと残念。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*