PHP

提供: ArchWiki
2015年1月7日 (水) 10:57時点におけるKusakata (トーク | 投稿記録)による版 (1版 をインポートしました)
ナビゲーションに移動 検索に移動

PHP は広く使われている多目的のスクリプト言語で、特にウェブ開発に適しており HTML に埋め込むことができます。

インストール

公式リポジトリから php パッケージをインストールしてください。

PHP スクリプトを普通の CGI として実行するには、php-cgi パッケージが必要です。

セットアップ

PHP はスタンドアロンで実行することもできますが、普通は Apache や nginx、lighttpd などの http サーバーと一緒に使われます。

設定

メインの PHP 設定ファイルは /etc/php/php.ini にあり豊富なドキュメントが揃っています。

date.timezone = Europe/Berlin
  • PHP のコードをデバッグするためにエラーを表示したい場合、/etc/php/php.inidisplay_errorsOn に変更してください:
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.iniextension=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/binphp, 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 が認識できるように) zcabuild.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 になります。

参照