PHP
PHP は広く使われている多目的のスクリプト言語で、特にウェブ開発に適しており HTML に埋め込むことができます。
インストール
公式リポジトリから php パッケージをインストールしてください。
PHP スクリプトを普通の CGI として実行するには、php-cgi パッケージが必要です。
セットアップ
PHP はスタンドアロンで実行することもできますが、普通は Apache や nginx、lighttpd などの http サーバーと一緒に使われます。
- スタンドアロン:
php -S localhost:8000 -t public_html/
。ドキュメント を参照 - Apache: Apache HTTP Server を参照
- lighttpd: lighttpd を参照
- nginx: nginx を参照
設定
メインの PHP 設定ファイルは /etc/php/php.ini
にあり豊富なドキュメントが揃っています。
/etc/php/php.ini
には以下のようにタイムゾーンを設定することが推奨されています (タイムゾーンのリスト):
date.timezone = Europe/Berlin
- PHP のコードをデバッグするためにエラーを表示したい場合、
/etc/php/php.ini
のdisplay_errors
をOn
に変更してください:
display_errors=On
- 必要であれば、
/etc/httpd/conf/extra/php5_module.conf
に、.phtml
のファイルハンドラを追加してください:
DirectoryIndex index.php index.phtml index.html
拡張
よく使われる PHP の拡張は公式リポジトリに入っています:
# pacman -Ss php-
gd
php-gd を使うには次の行をアンコメント:
extension=gd.so
imagemagick
imagemagick を使うには # pecl install imagick
を実行してください。pecl バイナリは php-pear パッケージに含まれています。そして次を追加:
extension=imagick.so
pthreads エクステンション
POSIX マルチスレッディングを使いたい場合、pthreads エクステンションが必要になります。pecl
を使って pthreads (http://pecl.php.net/package/pthreads) をインストールするにはスレッドセーフティフラグ --enable-maintainer-zts
を付けてコンパイルされた PHP を使わなくてはなりません。元のパッケージにフラグをつけて再ビルドするのが一番簡単な方法になります。
手順は PHP pthreads extension のページに記載されています。
mcrypt
mcrypt
モジュールが使いたい場合、php-mcrypt をインストールして /etc/php/php.ini
の extension=mcrypt.so
をアンコメントしてください:
extension=mcrypt.so
PCNTL
PCNTL を使うことでサーバーサイドのマシンにプロセスを直接作成することができるようになります。これでやりたいことがやれるようになる一方、状況をぐちゃぐちゃにするパワーを PHP に与えることにもなります。そのため、他の便利なエクステンションと同じようにロードすることはできない PHP エクステンションです。この拡張を有効にするには (デフォルトでは有効になっていません) PCNTL を PHP に組み込んでコンパイルする必要があります。
Zend Core + Apache
Zend Core は zend.com によって提供されている公式の PHP ディストリビューションです。インストーラやアップデータ, zend optimizer, oracle のサポート, 必要なライブラリが含まれています。ただし postgresql, firebird, odbc のサポートはありません。
- Apache の FastCGI モジュールである mod_fcgid をインストール (公式の奴は糞)。
- Zend Core (公式の PHP ディストリビューション) のインストール
- php パッケージをアンインストール。
- [1] から zend core をダウンロードしてインストール。一緒に入っている apache をインストールしたりウェブサーバーをセットアップしないでください。常に
/usr/local/Zend/Core
にインストールされるようにハードコードされています。 /usr/local/bin/zendcore
スクリプトを作成して/usr/local/bin
に php, php-cgi, pear, phpize のシンボリックリンクを作成#!/bin/bash
export LD_LIBRARY_PATH="/usr/local/Zend/Core/lib"
exec /usr/local/Zend/Core/bin/`basename $0` "$@"
- Apache のセットアップ:
/etc/httpd/conf/httpd.conf
に以下を追加LoadModule fcgid_module modules/mod_fcgid.so
<Directory /srv/http>
AddHandler fcgid-script .php
FCGIWrapper /usr/local/bin/php-cgi .php
Options ExecCGI
Allow from all
</Directory>
SocketPath /tmp/fcgidsock
SharememPath /tmp/fcgidshm- Directory パスを忘れずに変更
- (キャッシュが使えるように) Zend Optimizer を無効化:
/etc/php.ini
を編集して、ファイルの一番下らへんにある次の行をアンコメント:zend_extension_manager.optimizer="/usr/local/Zend/Core/lib/zend/optimizer"
- APC (Alternative PHP Cache) のインストール:
- スーパーユーザーで
pear install pecl.php.net/apc
を実行。 /etc/php.ini
を編集して "; Zend Core extensions..." (1205行目) の後に行を追加:extension=apc.so
- スーパーユーザーで
- Zend Core やその他のコンポーネントのアップデート
/usr/local/Zend/Core/setup
を実行
開発ツール
Komodo
PHP+HTML+JavaScript の素晴らしい統合を提供します。コードフォーマットやユニコードのサポートはありません。
Komodo IDE | Komodo Edit (free)
カスタムエンコーディングの追加:
KOMODO_INSTALL_DIR/lib/mozilla/components/koEncodingServices.py
の84行目を編集して追加:
('cp950', 'Chinese(CP-950/Big5)', 'CP950', '', 1,'cp950'), ('cp936', 'Chinese(CP-936/GB2312)', 'CP936', '', 1,'cp936'), ('GB2312', 'Chinese(GB-2312)', 'GB2312', '', 1,'GB2312'), ....
フォーマットは (encoding name in python, description, short description, BOM, is ASCII-superset?, font encoding)
Netbeans
PHP を含む多数の言語に対応した完全な IDE です。デバッグ・リファクタリング・コードテンプレート・自動補完・XML 機能・ウェブデザイン・開発機能 (CSS の自動補完機能や PHP/JavaScript コードのヒント) などの機能があります。
Eclipse PDT
現時点では Eclipse PDT はまだ未完成です (v0.7)。例えば、クラスリストを自動でポップアップすることができません。ただし自動アクティベーションのトリガーキーを追加することはできます。
JavaScript サポートや DB クエリなどのプラグインも必要になるでしょう。
Zend Studio
Zend Studio は eclipse ベースの公式 PHP IDE です。この IDE には自動補完・高度なコードフォーマット・WYSIWYG html エディタ・リファクタリング・db アクセスやバージョン管理の統合、さらに他の eclipse プラグインで得ることができる eclipse の機能全てが含まれています。AUR の zendstudioAUR パッケージでインストール可能です。
Aptana Studio
PHP でのプログラミングやウェブ開発に向いている IDE です。現在のバージョン (3.2.2) には PHP デバッガは含まれていません。
Zend Code Analyzer
Zend Studio の PHP コードアナライザです。慎重な PHP コーディングには不可欠なプログラムです。
インストール
- Zend Studio Neon をダウンロード・インストール
- インストールディレクトリで、
find . -name "ZendCodeAnalyzer
を実行してパスを取得 - ZendCodeAnalyzer を
/usr/local/bin/zca
にコピー - zend studio はもう必要ないなら削除してかまいません
Vim の統合
以下の行を .vimrc
に追加:
autocmd FileType php setlocal makeprg=zca\ %<.php autocmd FileType php setlocal errorformat=%f(line\ %l):\ %m
Eclipse の統合
Error Link プラグイン:
- (Error Link が認識できるように) zca を build.zca にシンボリックリンク
- Sunshade プラグインスイートをインストール
- Preference -> Sunshade -> Error Link -> Add:
^(.*\.php)\(line (\d+)\): ()(.*)
- Run -> External Tools -> Open External Tools Dialog -> Select "Program" -> Clicn on "New":
Name: Zend Code Analyzer
Location: /usr/local/bin/build.zca
Working Directory: ${container_loc}
Arguments: --recursive ${resource_name}
Komodo の統合
Toolbox -> Add -> New Command:
- Command: zca --recursive %F
- Run in: Command Output Tab
- Parse output with:
^(?P<file>.+?)\(line (?P<line>\d+)\): (?P<content>.*)$
- Show parsed output as a list を選択
トラブルシューティング
PHP Fatal error: Class 'ZipArchive' not found
zip エクステンションが有効になっていることを確認してください。
$ grep zip /etc/php/php.ini
extension=zip.so
/etc/php/php.ini が適用されない
php.ini が適用されない場合、ini ファイルの名前が使用している sapi に合わせて変更されています。例えば uwsgi を使っている場合、ファイルの名前は /etc/php/php-uwsgi.ini
になり、cli を使っている場合 /etc/php/php-cli.ini
になります。