PHP (日本語) - ArchWiki

# 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 の zendstudio パッケージでインストール可能です。

### 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` になります。

## 参照

- PHP 公式ウェブサイト

Category:

- Programming language (日本語)