PHP
PHP は広く使われている多目的のスクリプト言語で、特にウェブ開発に適しており HTML に埋め込むことができます。
インストール
古いバージョンの PHP は php53AUR、 php55AUR、 php56AUR、 php70AUR、 php71AUR、 php72AUR、 php73AUR および php74AUR パッケージなどが AUR に存在します。
起動
PHP はスタンドアロンで実行できますが、通常は Web サーバで使用します。そのためには、追加のパッケージをインストールして、設定ファイルを編集する必要があります。一般的な設定については、Apache HTTP Server、 nginx、 lighttpd および Hiawatha を参照してください。PHP スクリプトを 純粋な CGI として実行するには、php-cgi パッケージが必要です。
設定
メインの PHP 設定ファイルは /etc/php/php.ini
にあり豊富なドキュメントが揃っています。
/etc/php/php.ini
には以下のようにタイムゾーンを設定することが推奨されています (タイムゾーンのリスト):
date.timezone = Europe/Berlin
- PHP のコードをデバッグするためにエラーを表示したい場合、
/etc/php/php.ini
のdisplay_errors
をOn
に変更してください:
display_errors=On
- open_basedir ディレクティブは、PHP がアクセスできるパスを制限することで、セキュリティを向上させますが、その代わりに通常のプログラムの実行に支障をきたす可能性があります。PHP 7.0 以降、このディレクティブは上流にあわせるかたちでデフォルトでは設定されていないため、使用したいユーザーは手動で設定する必要があります。すべてのシンボリックリンクは解決されるので、シンボリックリンクでこの制限を回避することはできません。
nextcloud
やphpmyadmin
のような特定のウェブアプリのためのデフォルトの Arch パッケージは、/usr/share/webapps
の下にウェブアプリをインストールし、/etc/webapps
の下にそれらのウェブアプリのための実際の設定ファイルを示すシンボリックリンクを作成します。そのため、open_basedir
を設定している場合は、これらのフォルダが両方ともopen_basedir
にある事を確認してください。これは他の場所にインストールされたウェブアプリの場合は当然異なります。例:
open_basedir = /srv/http/:/var/www/:/home/:/tmp/:/var/tmp/:/var/cache/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/
拡張
よく使われる PHP の拡張は公式リポジトリに入っています:
# pacman -Ss php-
AUR にある PHP の拡張のパッケージには名前の前に php-* または php56-* が付きます。例: php-imagick, php-redis, php56-mcryptAUR。
gd
php-gd を使うには /etc/php/php.ini
の次の行をアンコメント:
extension=gd
imagemagick
imagemagick と PHP の拡張ライブラリをインストールしてから、PHP の設定に extension=imagick
を追加することで使うことができます。
AUR を使う
php-imagick をインストールしてください。imagemagick も依存パッケージとしてインストールされます。パッケージをインストールすると /etc/php/conf.d/imagick.ini
が作成されるため自動的に PHP の設定で拡張が有効になります。
pecl を使う
先に imagemagick をインストールしてください。pecl バイナリは php-pearAUR パッケージに含まれています。pecl をインストールしたら、以下のコマンドで imagemagick の PHP 拡張をインストール:
# pecl install imagick
そして以下のコマンドで拡張を有効化:
# echo 'extension=imagick'>/etc/php/conf.d/imagick.ini
pthreads
POSIX マルチスレッディングを使いたい場合、pthreads 拡張が必要になります。pecl
を使って pthreads (http://pecl.php.net/package/pthreads) をインストールするにはスレッドセーフティフラグ --enable-maintainer-zts
を付けてコンパイルされた PHP を使わなくてはなりません。元のパッケージにフラグをつけて再ビルドするのが一番簡単な方法になります。
手順は PHP pthreads 拡張のページに記載されています。
PCNTL
PCNTL を使うことでサーバーサイドのマシンにプロセスを直接作成することができるようになります。これでやりたいことがやれるようになる一方、状況をぐちゃぐちゃにするパワーを PHP に与えることにもなります。そのため、他の便利なエクステンションと同じようにロードすることはできない PHP エクステンションです。この拡張を有効にするには (デフォルトでは有効になっていません) PCNTL を PHP に組み込んでコンパイルする必要があります。
MySQL/MariaDB
MariaDB に書かれている手順に従って MySQL/MariaDB をインストール・設定ください。
/etc/php/php.ini
の 以下の行 をアンコメントします:
extension=pdo_mysql extension=mysqli
ウェブスクリプト用に権限を抑えた MySQL ユーザーを追加することができます。また、/etc/mysql/my.cnf
を編集して skip-networking
行をアンコメントすると MySQL サーバーはローカルホストからしかアクセスできなくなります。変更を適用するには MySQL の再起動が必要です。
Redis
Redis をインストール・設定してから php-redis または phpredis-gitAUR パッケージをインストールしてください。
それからパッケージの行をアンコメントしてください。例: /etc/php/conf.d/redis.ini
。
PostgreSQL
PostgreSQL をインストール・設定したら、php-pgsql パッケージをインストールして /etc/php/php.ini
の以下の行をアンコメントしてください:
extension=pdo_pgsql extension=pgsql
Sqlite
Sqlite をインストール・設定したら、php-sqlite パッケージをインストールして /etc/php/php.ini
の以下の行をアンコメントしてください:
extension=pdo_sqlite extension=sqlite3
XDebug
XDebug は var_dump() 関数による php コードのデバッグを楽にします。xdebug をインストールして /etc/php/conf.d/xdebug.ini
の以下の行をアンコメントしてください:
zend_extension=xdebug xdebug.remote_enable=on xdebug.remote_host=127.0.0.1 xdebug.remote_port=9000 xdebug.remote_handler=dbgp
IMAP
php-imap をインストールして /etc/php/php.ini
の以下の行をアンコメントしてください:
extension=imap
キャッシュ
PHP には2種類のキャッシュが存在します: opcode/bytecode キャッシュと userland/user data キャッシュです。両方を使うことでアプリケーションの速度を相当上げることができるため、できるかぎり有効にすることを推奨します。
- Zend OPCache は opcode のキャッシュだけを行います。
- APCu は userland のキャッシュだけを行います。
キャッシュを最適化するために、両方を有効にしてください。以下の #OPCache と #APCu の両方を読むことで有効化できます。
OPCache
OPCache は標準の PHP ディストリビューションに付属しているため、OPCache は PHP 設定ファイルに以下の行を追加あるいはアンコメントするだけで有効化できます:
/etc/php/php.ini
zend_extension=opcache
PHP のウェブサイトにある 公式エントリ に OPCache のオプションのリストや推奨される設定が載っています。
APCu
APCu は php-apcu パッケージでインストールできます。/etc/php/conf.d/apcu.ini
の以下の行をアンコメントするか、以下の行を PHP 設定ファイルに追加することで有効にします:
extension=apcu
APCu の作者は推奨される設定を 記述 しています:
apc.enabled=1
とapc.shm_size=32M
は デフォルト値 なので設定しなくても問題ありません。- その一方
apc.ttl=7200
は 多少効果がある ようです。 - 最後に
apc.enable_cli=1
はマニュアルでは 非推奨 になっていますが、ownCloud などソフトウェアによっては必須です。
開発ツール
Aptana Studio
Aptana Studio は PHP でのプログラミングやウェブ開発に向いている IDE です。aptana-studioAUR パッケージでインストールできます。現在のバージョン (3.2.2) には PHP デバッガは含まれていません。
Eclipse PDT
Eclipse PDT は Eclipse の PHP バージョンです。eclipse-phpAUR パッケージでインストールできます。詳しくは Eclipse を参照。
JavaScript サポートや DB クエリなどのプラグインも必要になるでしょう。
Komodo
Komodo は PHP+HTML+JavaScript の素晴らしい統合を提供する IDE です。Komodo Edit にはエディタだけが含まれています。komodo-editAUR パッケージでインストールできます。
Netbeans
PHP を含む多数の言語に対応した完全な IDE です。デバッグ・リファクタリング・コードテンプレート・自動補完・XML 機能・ウェブデザイン・開発機能 (CSS の自動補完機能や PHP/JavaScript コードのヒント) などの機能があります。netbeans パッケージでインストールしてください。
PhpStorm
JetBrains PhpStorm は JetBrains の IntelliJ IDEA プラットフォームで作られた商用・クロスプラットフォームの PHP 向け IDE です。phpstormAUR パッケージでインストールできます。あるいは phpstorm-eapAUR で30日間のトライアル版を使えます。Jetbrains からは教育用のフリーライセンスをもらうことが可能です [1]。
Zend Studio
Zend Studio は Eclipse ベースの公式 PHP IDE です。この IDE には自動補完・高度なコードフォーマット・WYSIWYG html エディタ・リファクタリング・db アクセスやバージョン管理の統合、さらに他の Eclipse プラグインで得ることができる Eclipse の機能全てが含まれています。AUR の zendstudioAUR パッケージでインストール可能です。
コマンドラインツール
Composer
Composer は PHP の依存関係マネージャです。composer パッケージでインストールできます。
ユーザー全体のインストールの許可
現在のユーザーを使ってグローバルにパッケージをインストールするには (例: $ composer global require "package/name"
)、環境変数でデフォルトの場所を指定すると良いでしょう:
PATH="$HOME/.config/composer/vendor/bin:$PATH"
Box
Box は Phar をビルド・管理するためのアプリケーションです。php-boxAUR パッケージでインストールできます。
PDepend
PHP Depend (pdepend) は PHP のソフトウェアメトリクスツールです。pdependAUR パッケージでインストールできます。
PHP Coding Standards Fixer
PHP Coding Standards Fixer はコードを PSR-1 や PSR-2 コーディング規約にしたがって修正します。php-cs-fixerAUR パッケージでインストールできます。
PHP-CodeSniffer
PHP CodeSniffer は PHP, JavaScript, CSS ファイルをトークン化してコーディング規約に違反していないか確認します。php-codesnifferAUR パッケージでインストールできます。
phpcov
phpcov は PHP_CodeCoverage ライブラリのコマンドラインフロントエンドです。phpcovAUR パッケージでインストールできます。
phpDox
phpDox は PHP プロジェクトのドキュメントジェネレータです。API ドキュメントなどが生成できます。phpdoxAUR パッケージでインストールできます。
PHPLoc
PHPLoc は PHP プロジェクトのサイズを測定するツールです。phplocAUR パッケージでインストールできます。
PhpMetrics
PhpMetrics は PHP プロジェクトの様々なメトリクスを提供します。phpmetricsAUR パッケージでインストールできます。
phptok
phptok は PHP のソースコードファイルのトークンを素早くダンプできるツールです。phptokAUR パッケージでインストールできます。
PHPUnit
PHPUnit はプログラマー用の PHP テストフレームワークです。phpunitAUR パッケージでインストールできます。
PHPUnit Skeleton Generator
PHPUnit Skeleton Generator は実運用しているコードのクラスからテストクラスを生成したりその逆ができるツールです。phpunit-skeleton-generatorAUR パッケージでインストールできます。
Producer
Producer は PHP ライブラリパッケージを検証するコマンドラインの品質保証ツールです。producerAUR パッケージでインストールできます。
トラブルシューティング
PHP Fatal error: Class 'ZipArchive' not found
zip エクステンションが有効になっていることを確認してください。
$ grep zip /etc/php/php.ini
extension=zip
/etc/php/php.ini が適用されない
php.ini
が適用されない場合、ini ファイルの名前が使用している sapi に合わせて変更されています。例えば uwsgi を使っている場合、ファイルの名前は /etc/php/php-uwsgi.ini
になり、cli を使っている場合 /etc/php/php-cli.ini
になります。
PHP Warning: PHP Startup: <module>: Unable to initialize module
php
を実行したときにこのエラーが表示される場合、モジュールのバージョンが古くなっています。PHP のコアやモジュールは全て互換性を保つようにメンテナンスされているので Arch Linux で発生するのは稀です。
AUR からコンパイルしたモジュールを使用していると発生することがあります。/usr/lib/php/modules/
のファイルの日付をチェックして確認してください。
修正するには、AUR を検索してモジュールにアップデートが来ていないか確認してください。
もしモジュールがアップデートされていたら、AUR パッケージの Out of Date フラグを立ててください。