新着画像

白い玉々

白い玉々

今日の収穫

今日の収穫

テリヤ風熊五郎

テリヤ風熊五郎

畳の縁バッグ...斜め掛け…

畳の縁バッグ...斜め掛け…

畳の縁斜めがけ縦長バッグ

畳の縁斜めがけ縦長バッグ

Eclipse+ZendDebuggerによるDrupalの開発環境

将来はDrupalのPluginを自作してみたいと思いDrupalの開発環境を構築してみました。まだ、使いこなすというには程遠いですが、一応動くようになったので、ブログにまとめてみました。

EclipseはWindowsClientにインストールしました。ZendDebuggerを動かすDocumentRootは、主に開発に用いるWindowsClientと、より本番に近い環境でテストできるLinuxServerの両方用意しました。WindowsClientのDocumentRootは、Xamppを用いて構築しました。LinuxServerはCentOSです。

最初、Eclipseは、日本語化されたPleiadesを使用していました。PHP版の“Pleiades All in One”には、XAMPPも同梱されており、ZendDebuggerもセットアップされているので、ほとんどそのまま使え、とても便利です。しかし、トラブルが発生したとき、エラーメッセージが日本語だと、ネットで検索しても解決策が見つからなかったので、後に英語版に切り替えました。

XAMPPのセットアップ

参考文献は、drupal.org の“Set up a Windows test server using XAMPP”と“Simple install of Drupal on XAMPP”、Xamppのreadme_en.txtです。

apachefriends.orgのトップメニューでXAMPPを選択します。ページの中ほどの“XAMPP for Windows”をクリックします。最新版はこのページからダウンローでできますが、Drupalは最新版をサポートしてないので、更に“Source Forge”をクリックします。“XAMPP Windows”を開き、drupal.orgの“Simple install of Drupal on XAMPP”で推奨しているバージョンをダウンロードします。readme_en.txtには“highest level like E:\ or W:\”に解凍するように書いてあること、開発環境は何度も作り直す可能性が高いこと等から、新たにF:ドライブを作成し、その直下にダウンロードしたXAMPPを解凍しました。

“setup_xampp.bat”を動かしてから、“xampp control panel”を開き、ApacheとMySqlをstartすれば、xamppが使用できるようになります。余談ですが、control panel の Svc にチェックを入れると、Windowsのサービスとして登録され、自動的に起動されるようになりますが、Windowsの管理ツールを使わないと再起動できなくなるので、開発環境ではかえって不便になると思います。

ブラウザからlocalhostにアクセスすると、XAMPPの管理画面が開くので、言語を選択してください。XAMPPの管理画面で、トラブルが発生することは少ないと思うので、日本語でかまわないと思います。“セキュリティ”を選択し、“xamppsecurity.php”をクリックします。MySQLのrootパスワードを入力し、“パスワードを変更しました。”をクリックします。XAMPPのディレクトリのユーザとパスワードも設定できますが、私は“httpd.conf”でIPアドレスを制限する方法を選びました。

続いて、phpMyAdminにrootと今設定したパスワードで入り“特権”を選択します。念のため、“127.0.0.1”のrootにもパスワードを設定しましょう。DrupalのDBを登録するため、“新しいユーザを追加する”をクリックします。下記の操作を行った後、ページの最後の“実行する”をクリックしてください。

  • 適当なユーザ名を入力
  • ホスト:ローカルを選択
  • パスワードを生成しコピーをクリック
  • “同名のデータベースを作成しすべての特権を与える”を選択

ユーザ名とパスワードは、Drupalのインストールに必要なので、適当なファイルにコピーしておきましょう。

Debug用DocumentRootの作成

“Simple install of Drupal on XAMPP”は、xamppのデフォルトDocumentRootであるxampp/htdocs の直下に、drupalのフォルダーを展開するよう解説しています。しかし、“Set up a Windows test server using XAMPP”では、VirtualHostを用い別のDocumentRootを作る方法を解説しています。sub directoryの方が設定は簡単です。しかし、VirtualHostの方がdirectory構造がスッキリするので、開発環境のように変更が多い場合は管理し易いと思い、後者を選択しました。同じ理由から、LinuxServerのDocumentRooもVirtualHostにしました。

WindowsClientは“F:\xampp\apache\conf\extra\httpd-vhosts.conf”に、LinuxServerは“/etc/httpd/conf.d/”に、VirtualHostの定義ファイルを作成します。CentOSのhttpd.confでは、“Include conf.d/*.conf”となっているので、付ける名前に制限はありません。しかし、XAMPPのhttp.confでは、“Include conf/extra/httpd-vhosts.conf”となっているので、名前は変更できません。WindowsClientのVirtualHostの設定は下記の通りです。

NameVirtualHost 127.0.0.1:80

<VirtualHost 127.0.0.1>
  DocumentRoot "F:/xampp/htdocs"
  ServerName localhost
</VirtualHost>

<VirtualHost 127.0.0.1>
  DocumentRoot "F:/drupal-6.15"
  ServerName drupal6.local

  CustomLog logs/drupal6.local.access.log combined
  ErrorLog logs/drupal6.local.error.log

  <Directory "F:/drupal-6.15">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
  </Directory>
</VirtualHost>

“C:\Windows\System32\drivers\etc\hosts”には、既に“127.0.0.1  localhost”が設定されているので、“127.0.0.1  drupal6.local”を追加します。尚、Vistaには不具合があるようなので、hostsからIPV6のlocalhost“::1”に係わる設定をコメントアウトした方が無難です。残しておくと、Drupalで“HTTP request status fails”というエラーが発生することがあります。

LinuxServerにはDNSを立てているので、internal view の正引きzoneファイルにVirtualHostを追加しました。

Apacheを再起動します。

drupal.jpから日本語ディストリビューションをダウンロードし、VirtualHostに展開します。ブラウザーからVirtualHostにアクセスすると、install.phpが起動し、インストールが始まります。最初に言語を選択しますが、公開するサイトは日本語なので、ここでは日本語を選択します。引き続き、DBや管理者カウントを登録すれば、インストールが完了し、管理者カウントでログインした状態になります。

続いて、管理者の言語を英語に変更します。“アカウント情報”をクリックします。“編集”をクリックします。“言語”を“英語”に変更し、“保存”をクリックします。Drupal5までは、これで英語に切り替わったのですが、Drupal6では多言語のコンセプトが変わったため、更にソースの修正が必要です。includes/language.incの下記の2行をコメントアウトします。

  switch ($mode) {
//    case LANGUAGE_NEGOTIATION_NONE:
//      return language_default();

ZendDebugger+Eclipseのセットアップ

参考文献は、drupal.orgの“Configuring Eclipse for Remote Debugging with Zend”です。

downloads.zend.com/pdt/server-debugger/”から、DocumentRootのOSに合ったZendDebuggerをダウンロードします。ZendDebuggerは、PHPのバージョンにより異なるので、phpinfo()でPHPのバージョンを調べ、対応するZendDebuggerをPHPフォルダーにコピーします。XAMPPの場合は、管理画面からphpinfo()を見ることができます。同梱されているdummy.phpをDocumentRootにコピーします。

Exampleを参考に、php.iniの最後に、ZendDebuggerの設定を追加し、apacheを再起動します。WindowsClientの場合は、Example2がそのまま使えます。

www.zend.com/pdt”を開きます。“Download Eclipse PDT All-in-one”のイラストの下の“Windows”をクリックするとダウンロードが始まります。ファイルが大きいのでちょっと時間がかかりますが、ダウンロードが終わったら、eclipseフォルダ以下をF:の直下に展開します。

“F:\eclipse\eclipse.exe”をダブルクリックすると、Eclipseが起動します。最初にworkspaceを選択します。workspaceは、開発中のPlugin(Project)を管理するフォルダと考えてください。Workspaceを置く場所に特に制限はありません。自分が管理しやすい場所に、作ってください。

drupal.orgの“Configuring Eclipse”の“PHP Development Tools (PDT) (package)”に従って、Eclipseの設定を行います。ただし、“2. Make sure the file encoding and characters are Unix friendly so that any code and be committed back in to the Drupal CVS: ”に該当する部分は、見つからなかったので、放置しています。今のところ、支障はありません。

デバッガを試すProjectを準備します。私は、drupal.orgのCVSから、txonomy_menuをインポートしました。但し、インポートするProjectは、DocumentRootにもダウンロードし、有効化する必要があります。

  • “File > Import...”をクリックします。
  • “Import”画面が表示されるので、“Project from CVS”を選択し、“Next”をクリックします。
  • “Checkout Project from CVS Repository”画面が表示されます。Repositoryが設定されてないと、“Create a new repository location”が選択されているので、そのまま“Next”をクリックします。
  • “Enter Repository Location Information”画面が表示されるので、drupal.orgの“Checkout Drupal CVS into the Eclipse Workspace”の“Checkout Drupal in your Eclipse workspace”の“3. For Anonymous Access to the Drupal CVS insert the following information: ”に従って入力し、“Finish”をクリックします。
  • “Select Module”画面に移るので、“Use an existing module”を選択します。moduleの一覧が表示されるので、contributions > modules > txonomy_menu と順番に選択し、“Next”を2回クリックします。
  • “Select Tag”画面が表示されるので、“Refresh Tags”をクリックしてから、Versionを選択し、“Finish”をクリックします。
  • “New Project”画面が表示されるので、“PHP Project”を選択し、“Next”をクリックします。
  • “Project name”を入力し、“Finish”をクリックすると、CVSからworkspaceにダウンロードされ、Projectが作成されます。

デバッグ構成を作成します。

  • “Run -> Debug Configrations... ”をクリックします。
  • “Debug Configrations”画面が開くので、“PHP Web Page”を選択し、“New”アイコンをクリックすると、構成を作成する画面が表示されます。
  • このデバッグ構成を識別する名前“Name”を入力します。ProjectとDocumentRootの組み合わせになるので、それがわかる名前にしましょう。
  • “PHP Server: New”をクリックします。“PHP Server Creation”画面が表示されるので、Name:とDocumentRootを入力し、Finishをクリックします。
  • “File Browse”をクリックします。“Select File”画面が表示されるので、Projectからデバッグするモジュールを選択し、OKをクリックします。
  • “Break at First Line”のチェックを外し、デバッグするモジュールにBreakpointを設定します。
  • “Auto Gnerate”のチェックを外し、URL:の右の欄にindex.phpを入力します。
  • Applyをクリックすると、デバッグ構成が保存されます。
  • Debugをクリックすると、デバッグが始まります。

次回からは、この構成を選択すれば、同じ条件でデバッグが始められます。

尚、ServerのDocumentRootでデバッグする場合、“Break at First Line”がOnのままだと、“Could not open the editor: Text editor does not have a document provider”というエラーが発生します。Drupalのデバッグの場合、最初の実行モジュールであるindex.phpは、workspaceではなくDocumentRootにあります。想像の域を出ませんが、“Break at First Line”がOnのままだと、LinuxServer上のindex.phpでブレークしようとして、エラーになると思われます。

Trackback URL for this post:

http://www.5thbear.jp/trackback/123