「PHP」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
 
(Pkg/AUR テンプレートの更新)
(2人の利用者による、間の11版が非表示)
5行目: 5行目:
 
[[fr:Lamp]]
 
[[fr:Lamp]]
 
[[it:PHP]]
 
[[it:PHP]]
  +
[[ru:PHP]]
 
[[sr:PHP]]
 
[[sr:PHP]]
  +
[[zh-hans:PHP]]
[http://www.php.net/ PHP] は広く使われている多目的のスクリプト言語で、特にウェブ開発に適しており HTML に埋め込むことができます。
 
  +
[https://secure.php.net/ PHP] は広く使われている多目的のスクリプト言語で、特にウェブ開発に適しており HTML に埋め込むことができます。
   
 
== インストール ==
 
== インストール ==
[[公式リポジトリ]]から {{Pkg|php}} パッケージを[[インストール]]してください。
+
{{Pkg|php}} パッケージを[[インストール]]してください。
  +
  +
古いバージョンの PHP は {{AUR|php56}} パッケージなど AUR に存在します。
   
 
PHP スクリプトを普通の CGI として実行するには、{{Pkg|php-cgi}} パッケージが必要です。
 
PHP スクリプトを普通の CGI として実行するには、{{Pkg|php-cgi}} パッケージが必要です。
15行目: 19行目:
 
== セットアップ ==
 
== セットアップ ==
 
PHP はスタンドアロンで実行することもできますが、普通は Apache や nginx、lighttpd などの http サーバーと一緒に使われます。
 
PHP はスタンドアロンで実行することもできますが、普通は Apache や nginx、lighttpd などの http サーバーと一緒に使われます。
* '''スタンドアロン''': {{ic|php -S localhost:8000 -t public_html/}}。[http://docs.php.net/manual/en/features.commandline.webserver.php ドキュメント] を参照
+
* '''スタンドアロン''': {{ic|php -S localhost:8000 -t public_html/}}。[http://docs.php.net/manual/ja/features.commandline.webserver.php ドキュメント] を参照
* '''Apache''': [[Apache HTTP Server|Apache HTTP Server]] を参照
+
* '''Apache''': [[Apache HTTP Server]] を参照
* '''lighttpd''': [[lighttpd|lighttpd]] を参照
+
* '''lighttpd''': [[lighttpd]] を参照
* '''nginx''': [[nginx|nginx]] を参照
+
* '''nginx''': [[nginx]] を参照
  +
* '''Hiawatha''': [[Hiawatha]] を参照。
   
 
== 設定 ==
 
== 設定 ==
 
メインの PHP 設定ファイルは {{ic|/etc/php/php.ini}} にあり豊富なドキュメントが揃っています。
 
メインの PHP 設定ファイルは {{ic|/etc/php/php.ini}} にあり豊富なドキュメントが揃っています。
   
* {{ic|/etc/php/php.ini}} には以下のようにタイムゾーンを設定することが推奨されています ([http://www.php.net/manual/en/timezones.php タイムゾーンのリスト]):
+
* {{ic|/etc/php/php.ini}} には以下のようにタイムゾーンを設定することが推奨されています ([http://www.php.net/manual/ja/timezones.php タイムゾーンのリスト]):
 
date.timezone = Europe/Berlin
 
date.timezone = Europe/Berlin
   
29行目: 34行目:
 
display_errors=On
 
display_errors=On
   
  +
{{Tip|2015年11月22日以前までは、{{Pkg|composer}} の設定は {{ic|/usr/share/php-composer/php.ini}} とは別のファイルに記述されていました。}}
* 必要であれば、{{ic|/etc/httpd/conf/extra/php5_module.conf}} に、{{ic|.phtml}} のファイルハンドラを追加してください:
 
  +
DirectoryIndex index.php index.phtml index.html
 
  +
* [http://php.net/open-basedir open_basedir] ディレクティブは PHP がアクセスできるパスを制限します。セキュリティが高められますが、通常のプログラムの実行を妨げてしまう可能性もあります。PHP 7.0 から、上流にあわせて open_basedir は [https://www.archlinux.jp/news/php-70-packages-released/ デフォルトでは設定されない] ようになりました。使いたい場合は手動で設定が必要です。例:
  +
  +
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/
   
 
== 拡張 ==
 
== 拡張 ==
36行目: 44行目:
 
よく使われる PHP の拡張は公式リポジトリに入っています:
 
よく使われる PHP の拡張は公式リポジトリに入っています:
 
# pacman -Ss php-
 
# pacman -Ss php-
  +
  +
[[AUR]] にある PHP の拡張のパッケージには名前の前に php-* または php56-* が付きます。例: {{Pkg|php-imagick}}, {{Pkg|php-redis}}, {{AUR|php56-mcrypt}}。
   
 
===gd===
 
===gd===
{{Pkg|php-gd}} を使うには次の行をアンコメント:
+
{{Pkg|php-gd}} を使うには {{ic|/etc/php/php.ini}} の次の行をアンコメント:
extension=gd.so
+
extension=gd
   
  +
{{Tip|{{ic|/etc/php/php.ini}} を編集するのではなく {{ic|/etc/php/conf.d}} ディレクトリから拡張を有効化したり設定することもできます (例: {{ic|/etc/php/conf.d/gd.ini}})。}}
===imagemagick===
 
{{Pkg|imagemagick}} を使うには {{ic|# pecl install imagick}} を実行してください。pecl バイナリは {{Pkg|php-pear}} パッケージに含まれています。そして次を追加:
 
extension=imagick.so
 
   
  +
=== imagemagick ===
=== pthreads エクステンション ===
 
  +
{{Pkg|imagemagick}} と PHP の拡張ライブラリをインストールしてから、PHP の設定に {{ic|1=extension=imagick}} を追加することで使うことができます。
POSIX マルチスレッディングを使いたい場合、pthreads エクステンションが必要になります。{{ic|pecl}} を使って pthreads (http://pecl.php.net/package/pthreads) をインストールするにはスレッドセーフティフラグ {{ic|--enable-maintainer-zts}} を付けてコンパイルされた PHP を使わなくてはなりません。元のパッケージにフラグをつけて再ビルドするのが一番簡単な方法になります。
 
   
  +
==== AUR を使う ====
手順は [[PHP pthreads extension]] のページに記載されています。
 
  +
{{Pkg|php-imagick}} をインストールしてください。{{Pkg|imagemagick}} も依存パッケージとしてインストールされます。パッケージをインストールすると {{ic|/etc/php/conf.d/imagick.ini}} が作成されるため自動的に PHP の設定で拡張が有効になります。
   
=== mcrypt ===
+
==== ''pecl'' を使う ====
{{ic|mcrypt}} モジュールが使たい場合、{{Pkg|php-mcrypt}} をインストールし {{ic|/etc/php/php.ini}}{{ic|1=extension=mcrypt.so}}アンコメントしてください:
+
先に {{Pkg|imagemagick}} をインストールしてくださ。''pecl'' バイナリは {{AUR|php-pear}} パッケージに含まれています。''pecl'' をインストールしたら、以下のコマンドで ''imagemagick''PHP 拡張ール:
  +
# pecl install imagick
extension=mcrypt.so
 
  +
  +
そして以下のコマンドで拡張を有効化:
  +
# echo 'extension=imagick'>/etc/php/conf.d/imagick.ini
  +
  +
=== pthreads ===
  +
POSIX マルチスレッディングを使いたい場合、pthreads 拡張が必要になります。{{ic|pecl}} を使って pthreads (http://pecl.php.net/package/pthreads) をインストールするにはスレッドセーフティフラグ {{ic|--enable-maintainer-zts}} を付けてコンパイルされた PHP を使わなくてはなりません。元のパッケージにフラグをつけて再ビルドするのが一番簡単な方法になります。
  +
  +
手順は [[PHP pthreads 拡張]]のページに記載されています。
   
 
=== PCNTL ===
 
=== PCNTL ===
58行目: 75行目:
 
PCNTL を使うことでサーバーサイドのマシンにプロセスを直接作成することができるようになります。これでやりたいことがやれるようになる一方、状況をぐちゃぐちゃにするパワーを PHP に与えることにもなります。そのため、他の便利なエクステンションと同じようにロードすることはできない PHP エクステンションです。この拡張を有効にするには (デフォルトでは有効になっていません) PCNTL を PHP に組み込んでコンパイルする必要があります。
 
PCNTL を使うことでサーバーサイドのマシンにプロセスを直接作成することができるようになります。これでやりたいことがやれるようになる一方、状況をぐちゃぐちゃにするパワーを PHP に与えることにもなります。そのため、他の便利なエクステンションと同じようにロードすることはできない PHP エクステンションです。この拡張を有効にするには (デフォルトでは有効になっていません) PCNTL を PHP に組み込んでコンパイルする必要があります。
   
== Zend Core + Apache ==
+
=== MySQL/MariaDB ===
Zend Core は [http://www.zend.com zend.com] によって提供されている公式の PHP ディストリビューションです。インストーラやアップデータ, zend optimizer, oracle のサポート, 必要なライブラリが含まれています。ただし postgresql, firebird, odbc のサポートはありません。
 
* Apache の FastCGI モジュールである {{Pkg|mod_fcgid}} をインストール (公式の奴は糞)。
 
* Zend Core (公式の PHP ディストリビューション) のインストール
 
** {{Pkg|php}} パッケージをアンインストール。
 
** [http://www.zend.com/products/zend_core] から zend core をダウンロードしてインストール。一緒に入っている apache をインストールしたりウェブサーバーをセットアップしないでください。常に {{ic|/usr/local/Zend/Core}} にインストールされるようにハードコードされています。
 
** {{ic|/usr/local/bin/zendcore}} スクリプトを作成して {{ic|/usr/local/bin}} に ''php'', ''php-cgi'', ''pear'', ''phpize'' のシンボリックリンクを作成<br>{{ic|1=#!/bin/bash <br>export LD_LIBRARY_PATH="/usr/local/Zend/Core/lib"<br>exec /usr/local/Zend/Core/bin/`basename $0` "$@"}}
 
* Apache のセットアップ:
 
** {{ic|/etc/httpd/conf/httpd.conf}} に以下を追加<br>{{ic|LoadModule fcgid_module modules/mod_fcgid.so<br><Directory /srv/http><br>AddHandler fcgid-script .php<br>FCGIWrapper /usr/local/bin/php-cgi .php<br>Options ExecCGI<br>Allow from all<br></Directory><br>SocketPath /tmp/fcgidsock<br>SharememPath /tmp/fcgidshm}}
 
** Directory パスを忘れずに変更
 
* (キャッシュが使えるように) Zend Optimizer を無効化:
 
** {{ic|/etc/php.ini}} を編集して、ファイルの一番下らへんにある次の行をアンコメント:<br>{{ic|<nowiki>zend_extension_manager.optimizer="/usr/local/Zend/Core/lib/zend/optimizer"</nowiki>}}
 
* APC (Alternative PHP Cache) のインストール:
 
** スーパーユーザーで {{ic|pear install pecl.php.net/apc}} を実行。
 
** {{ic|/etc/php.ini}} を編集して ''"; Zend Core extensions..."'' (1205行目) の後に行を追加:<br>{{ic|<nowiki>extension=apc.so</nowiki>}}
 
* Zend Core やその他のコンポーネントのアップデート
 
** {{ic|/usr/local/Zend/Core/setup}} を実行
 
   
  +
[[MariaDB]] に書かれている手順に従って MySQL/MariaDB をインストール・設定ください。
== 開発ツール ==
 
   
  +
{{ic|/etc/php/php.ini}} の [https://secure.php.net/manual/ja/mysqlinfo.api.choosing.php 以下の行] をアンコメントします:
=== Komodo ===
 
PHP+HTML+JavaScript の素晴らしい統合を提供します。コードフォーマットやユニコードのサポートはありません。
 
   
  +
extension=pdo_mysql
[http://www.activestate.com/products/komodo_ide/ Komodo IDE] | [http://www.activestate.com/products/komodo_edit/ Komodo Edit (free)]
 
  +
extension=mysqli
   
  +
{{Warning|{{ic|1=extension=mysql}} は PHP 7.0 で [https://secure.php.net/manual/ja/migration70.removed-exts-sapis.php 削除] されました。}}
カスタムエンコーディングの追加:
 
*{{ic|''KOMODO_INSTALL_DIR''/lib/mozilla/components/koEncodingServices.py}} の84行目を編集して追加:
 
('cp950', 'Chinese(CP-950/Big5)', 'CP950', &#39;&#39;, 1,'cp950'),
 
('cp936', 'Chinese(CP-936/GB2312)', 'CP936', &#39;&#39;, 1,'cp936'),
 
('GB2312', 'Chinese(GB-2312)', 'GB2312', &#39;&#39;, 1,'GB2312'),
 
....
 
フォーマットは (''encoding name in python'', ''description'', ''short description'', BOM, ''is ASCII-superset?'', ''font encoding'')
 
   
  +
ウェブスクリプト用に権限を抑えた MySQL ユーザーを追加することができます。また、{{ic|/etc/mysql/my.cnf}} を編集して {{ic|skip-networking}} 行をアンコメントすると MySQL サーバーはローカルホストからしかアクセスできなくなります。変更を適用するには MySQL の再起動が必要です。
=== Netbeans ===
 
  +
PHP を含む多数の言語に対応した完全な IDE です。デバッグ・リファクタリング・コードテンプレート・自動補完・XML 機能・ウェブデザイン・開発機能 (CSS の自動補完機能や PHP/JavaScript コードのヒント) などの機能があります。
 
  +
{{Tip|[[phpMyAdmin]], [[Adminer]], {{Pkg|mysql-workbench}} などのツールをインストールしてデータベースを操作するのも良いでしょう。}}
  +
  +
=== Redis ===
  +
[[Redis]] をインストール・設定してから {{Pkg|php-redis}} または {{Aur|phpredis-git}} パッケージをインストールしてください。
  +
  +
それからパッケージの行をアンコメントしてください。例: {{ic|/etc/php/conf.d/redis.ini}}。
  +
  +
=== PostgreSQL ===
  +
  +
[[PostgreSQL]] をインストール・設定したら、{{pkg|php-pgsql}} パッケージをインストールして {{ic|/etc/php/php.ini}} の以下の行をアンコメントしてください:
  +
  +
extension=pdo_pgsql
  +
extension=pgsql
  +
  +
=== Sqlite ===
  +
  +
[[Sqlite]] をインストール・設定したら、{{pkg|php-sqlite}} パッケージをインストールして {{ic|/etc/php/php.ini}} の以下の行をアンコメントしてください:
  +
  +
extension=pdo_sqlite
  +
extension=sqlite3
  +
  +
=== XDebug ===
  +
  +
XDebug は var_dump() 関数による php コードのデバッグを楽にします。{{Pkg|xdebug}} をインストールして {{ic|/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
  +
  +
{{Note|リモートデバッグセッションを常時起動してデバッグクライアントに接続するには {{ic|1=xdebug.remote_autostart=on}} も設定する必要があります。}}
  +
  +
=== IMAP ===
  +
  +
{{Pkg|php-imap}} をインストールして {{ic|/etc/php/php.ini}} の以下の行をアンコメントしてください:
  +
  +
extension=imap
  +
  +
== キャッシュ ==
  +
  +
PHP には2種類のキャッシュが存在します: ''opcode''/''bytecode'' キャッシュと ''userland''/''user data'' キャッシュです。両方を使うことでアプリケーションの速度を相当上げることができるため、できるかぎり有効にすることを推奨します。
  +
  +
* [[wikipedia:Zend Opcache|Zend OPCache]] は ''opcode'' のキャッシュだけを行います。
  +
* [https://github.com/krakjoe/apcu/ APCu] は ''userland'' のキャッシュだけを行います。
  +
  +
キャッシュを最適化するために、'''両方'''を有効にしてください。以下の [[#OPCache]] と [[#APCu]] の両方を読むことで有効化できます。
  +
  +
=== OPCache ===
  +
  +
OPCache は標準の PHP ディストリビューションに付属しているため、OPCache は [[#設定|PHP 設定ファイル]]に以下の行を追加あるいはアンコメントするだけで有効化できます:
  +
{{hc|/etc/php/php.ini|2=zend_extension=opcache}}
  +
  +
PHP のウェブサイトにある [https://secure.php.net/manual/ja/book.opcache.php 公式エントリ] に OPCache のオプションのリストや推奨される設定が載っています。
  +
  +
{{Warning|マニュアルの [https://secure.php.net/manual/ja/opcache.installation.php#opcache.installation.recommended 推奨設定] を適用するときは、設定手順の下に書かれている [https://secure.php.net/manual/ja/opcache.installation.php#114567 最初のコメント] も注意深く読むようにしてください。設定によっては {{ic|zend_mm_heap corrupted}} などのエラーが発生するようになってしまうことがあります。}}
  +
  +
=== APCu ===
  +
  +
APCu は {{Pkg|php-apcu}} パッケージでインストールできます。{{ic|/etc/php/conf.d/apcu.ini}} の以下の行をアンコメントするか、以下の行を [[#設定|PHP 設定ファイル]]に追加することで有効にします:
  +
  +
extension=apcu
  +
  +
APCu の作者は推奨される設定を [https://github.com/krakjoe/apcu/blob/master/INSTALL 記述] しています:
  +
* {{ic|1=apc.enabled=1}} と {{ic|1=apc.shm_size=32M}} は [https://secure.php.net/manual/ja/apc.configuration.php デフォルト値] なので設定しなくても問題ありません。
  +
* その一方 {{ic|1=apc.ttl=7200}} は [https://secure.php.net/manual/ja/apc.configuration.php#ini.apc.ttl 多少効果がある] ようです。
  +
* 最後に {{ic|1=apc.enable_cli=1}} はマニュアルでは [https://secure.php.net/manual/ja/apc.configuration.php#ini.apc.enable-cli 非推奨] になっていますが、[https://github.com/owncloud/core/issues/17329#issuecomment-119248944 ownCloud] などソフトウェアによっては必須です。
  +
  +
{{Tip|上記の設定は APCu 専用の {{ic|/etc/php/conf.d/apcu.ini}} あるいは [[#設定|PHP 設定ファイル]]に直接記述することができます。拡張を二回有効にするとシステムログにエラーが残るので止めてください。}}
  +
  +
== 開発ツール ==
  +
  +
=== Aptana Studio ===
  +
[http://www.aptana.com/products/studio3.html Aptana Studio] は PHP でのプログラミングやウェブ開発に向いている IDE です。{{AUR|aptana-studio}} パッケージでインストールできます。現在のバージョン (3.2.2) には PHP デバッガは含まれていません。
   
 
=== Eclipse PDT ===
 
=== Eclipse PDT ===
現時点では [http://www.zend.com/pdt Eclipse PDT] はまだ未完成です (v0.7)。例えば、クラスリストを自動ポップアップることができませんただし自動アクティベショリガキーを追加することはできます。
+
[http://www.eclipse.org/pdt/ Eclipse PDT] は Eclipse の PHP バージョンです。{{Pkg|eclipse-php}} パッケジでイトーできます。詳しくは [[Eclipse]] を参照
   
 
JavaScript サポートや DB クエリなどのプラグインも必要になるでしょう。
 
JavaScript サポートや DB クエリなどのプラグインも必要になるでしょう。
  +
  +
=== Komodo ===
  +
[http://komodoide.com/ Komodo] は PHP+HTML+JavaScript の素晴らしい統合を提供する IDE です。[http://komodoide.com/komodo-edit/ Komodo Edit] にはエディタだけが含まれています。{{AUR|komodo-edit}} パッケージでインストールできます。
  +
  +
=== Netbeans ===
  +
PHP を含む多数の言語に対応した完全な IDE です。デバッグ・リファクタリング・コードテンプレート・自動補完・XML 機能・ウェブデザイン・開発機能 (CSS の自動補完機能や PHP/JavaScript コードのヒント) などの機能があります。{{Pkg|netbeans}} パッケージでインストールしてください。
  +
  +
=== PhpStorm ===
  +
  +
[[Wikipedia:PhpStorm|JetBrains PhpStorm]] は JetBrains の IntelliJ IDEA プラットフォームで作られた商用・クロスプラットフォームの PHP 向け IDE です。{{AUR|phpstorm}} パッケージでインストールできます。あるいは {{AUR|phpstorm-eap}} で30日間のトライアル版を使えます。Jetbrains からは教育用のフリーライセンスをもらうことが可能です [https://www.jetbrains.com/student/]。
   
 
=== Zend Studio ===
 
=== Zend Studio ===
[http://www.zend.com/products/studio/ Zend Studio] は eclipse ベースの公式 PHP IDE です。この IDE には自動補完・高度なコードフォーマット・WYSIWYG html エディタ・リファクタリング・db アクセスやバージョン管理の統合、さらに他の eclipse プラグインで得ることができる eclipse の機能全てが含まれています。AUR の {{AUR|zendstudio}} パッケージでインストール可能です。
+
[http://www.zend.com/products/studio/ Zend Studio] は Eclipse ベースの公式 PHP IDE です。この IDE には自動補完・高度なコードフォーマット・WYSIWYG html エディタ・リファクタリング・db アクセスやバージョン管理の統合、さらに他の Eclipse プラグインで得ることができる Eclipse の機能全てが含まれています。AUR の {{AUR|zendstudio}} パッケージでインストール可能です。
   
  +
== コマンドラインツール ==
=== Aptana Studio ===
 
PHP でのプログラミングやウェブ開発に向いている IDE です。現在のバージョン (3.2.2) には PHP デバッガは含まれていません。
 
   
=== Zend Code Analyzer ===
+
=== Composer ===
Zend Studio の PHP コードアナライザです。慎重な PHP コーディングには不可欠なプログラムです。
 
   
  +
[https://getcomposer.org/ Composer] は PHP の依存関係マネージャです。{{Pkg|composer}} パッケージでインストールできます。
==== インストール ====
 
* Zend Studio Neon をダウンロード・インストール
 
* インストールディレクトリで、{{ic|find . -name "ZendCodeAnalyzer}} を実行してパスを取得
 
* ZendCodeAnalyzer を {{ic|/usr/local/bin/zca}} にコピー
 
* zend studio はもう必要ないなら削除してかまいません
 
   
==== Vim 統合 ====
+
==== ユーザー全体インストールの許可 ====
以下の行を {{ic|.vimrc}} に追加:
 
autocmd FileType php setlocal makeprg=zca\ %<.php
 
autocmd FileType php setlocal errorformat=%f(line\ %l):\ %m
 
   
  +
現在のユーザーを使ってグローバルにパッケージをインストールするには (例: {{ic|$ composer global require "package/name"}})、[[環境変数]]でデフォルトの場所を指定すると良いでしょう:
==== Eclipse の統合 ====
 
''Error Link'' プラグイン:
 
* (Error Link が認識できるように) ''zca'' を ''build.zca'' にシンボリックリンク
 
* [http://sunshade.sourceforge.net/ Sunshade] プラグインスイートをインストール
 
* Preference -> Sunshade -> Error Link -> Add: ''{{ic|^(.*\.php)\(line (\d+)\): ()(.*)}}''
 
* Run -> External Tools -> Open External Tools Dialog -> Select "Program" -> Clicn on "New":<br>Name: Zend Code Analyzer<br>Location: ''/usr/local/bin/build.zca''<br>Working Directory: ''${container_loc}''<br>Arguments: ''--recursive ${resource_name}''
 
   
  +
PATH="$HOME/.config/composer/vendor/bin:$PATH"
==== Komodo の統合 ====
 
  +
Toolbox -> Add -> New Command:
 
  +
=== Box ===
* Command: ''zca --recursive %F''
 
  +
* Run in: Command Output Tab
 
  +
[http://box-project.github.io/box2/ Box] は Phar をビルド・管理するためのアプリケーションです。{{AUR|php-box}} パッケージでインストールできます。
* Parse output with: ''{{ic|^(?P<file>.+?)\(line (?P<line>\d+)\): (?P<content>.*)$}}''
 
  +
* ''Show parsed output as a list'' を選択
 
  +
=== PDepend ===
  +
  +
[http://pdepend.org/ PHP Depend] (pdepend) は PHP のソフトウェアメトリクスツールです。{{AUR|pdepend}} パッケージでインストールできます。
  +
  +
=== PHP Coding Standards Fixer ===
  +
  +
[http://cs.sensiolabs.org/ PHP Coding Standards Fixer] はコードを PSR-1 や PSR-2 コーディング規約にしたがって修正します。{{AUR|php-cs-fixer}} パッケージでインストールできます。
  +
  +
=== PHP-CodeSniffer ===
  +
  +
[http://pear.php.net/package/PHP_CodeSniffer/ PHP CodeSniffer] は PHP, JavaScript, CSS ファイルをトークン化してコーディング規約に違反していないか確認します。{{AUR|php-codesniffer}} パッケージでインストールできます。
  +
  +
=== phpcov ===
  +
  +
[https://github.com/sebastianbergmann/phpcov phpcov] は PHP_CodeCoverage ライブラリのコマンドラインフロントエンドです。{{AUR|phpcov}} パッケージでインストールできます。
  +
  +
=== phpDox ===
  +
  +
[http://phpdox.de/ phpDox] は PHP プロジェクトのドキュメントジェネレータです。API ドキュメントなどが生成できます。{{AUR|phpdox}} パッケージでインストールできます。
  +
  +
=== PHPLoc ===
  +
  +
[https://github.com/sebastianbergmann/phploc/ PHPLoc] は PHP プロジェクトのサイズを測定するツールです。{{AUR|phploc}} パッケージでインストールできます。
  +
  +
=== PhpMetrics ===
  +
  +
[http://www.phpmetrics.org/ PhpMetrics] は PHP プロジェクトの様々なメトリクスを提供します。{{AUR|phpmetrics}} パッケージでインストールできます。
  +
  +
=== phptok ===
  +
  +
[https://github.com/sebastianbergmann/phptok phptok] は PHP のソースコードファイルのトークンを素早くダンプできるツールです。{{AUR|phptok}} パッケージでインストールできます。
  +
  +
=== PHPUnit ===
  +
  +
[https://phpunit.de PHPUnit] はプログラマー用の PHP テストフレームワークです。{{AUR|phpunit}} パッケージでインストールできます。
  +
  +
=== PHPUnit Skeleton Generator===
  +
  +
[https://github.com/sebastianbergmann/phpunit-skeleton-generator PHPUnit Skeleton Generator] は実運用しているコードのクラスからテストクラスを生成したりその逆ができるツールです。{{AUR|phpunit-skeleton-generator}} パッケージでインストールできます。
  +
  +
=== Producer ===
  +
  +
[http://getproducer.org/ Producer] は PHP ライブラリパッケージを検証するコマンドラインの品質保証ツールです。{{AUR|producer}} パッケージでインストールできます。
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
137行目: 245行目:
 
zip エクステンションが有効になっていることを確認してください。
 
zip エクステンションが有効になっていることを確認してください。
 
{{hc|$ grep zip /etc/php/php.ini|2=
 
{{hc|$ grep zip /etc/php/php.ini|2=
extension=zip.so}}
+
extension=zip}}
   
 
=== /etc/php/php.ini が適用されない ===
 
=== /etc/php/php.ini が適用されない ===
php.ini が適用されない場合、ini ファイルの名前が使用している sapi に合わせて変更されています。例えば uwsgi を使っている場合、ファイルの名前は {{ic|/etc/php/php-uwsgi.ini}} になり、cli を使っている場合 {{ic|/etc/php/php-cli.ini}} になります。
+
{{ic|php.ini}} が適用されない場合、ini ファイルの名前が使用している sapi に合わせて変更されています。例えば uwsgi を使っている場合、ファイルの名前は {{ic|/etc/php/php-uwsgi.ini}} になり、cli を使っている場合 {{ic|/etc/php/php-cli.ini}} になります。
  +
  +
=== PHP Warning: PHP Startup: ''<module>'': Unable to initialize module ===
  +
  +
{{ic|php}} を実行したときにこのエラーが表示される場合、モジュールのバージョンが古くなっています。PHP のコアやモジュールは全て互換性を保つようにメンテナンスされているので Arch Linux で発生するのは稀です。
  +
  +
[[AUR]] からコンパイルしたモジュールを使用していると発生することがあります。{{ic|/usr/lib/php/modules/}} のファイルの日付をチェックして確認してください。
  +
  +
修正するには、[[AUR]] を検索してモジュールにアップデートが来ていないか確認してください。
  +
  +
もしモジュールがアップデートされていたら、[[AUR]] パッケージの Out of Date フラグを立ててください。
   
 
== 参照 ==
 
== 参照 ==

2019年9月25日 (水) 23:55時点における版

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

インストール

php パッケージをインストールしてください。

古いバージョンの PHP は php56AUR パッケージなど AUR に存在します。

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
ヒント: 2015年11月22日以前までは、composer の設定は /usr/share/php-composer/php.ini とは別のファイルに記述されていました。
  • open_basedir ディレクティブは PHP がアクセスできるパスを制限します。セキュリティが高められますが、通常のプログラムの実行を妨げてしまう可能性もあります。PHP 7.0 から、上流にあわせて open_basedir は デフォルトでは設定されない ようになりました。使いたい場合は手動で設定が必要です。例:
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/

拡張

よく使われる PHP の拡張は公式リポジトリに入っています:

# pacman -Ss php-

AUR にある PHP の拡張のパッケージには名前の前に php-* または php56-* が付きます。例: php-imagick, php-redis, php56-mcryptAUR

gd

php-gd を使うには /etc/php/php.ini の次の行をアンコメント:

extension=gd
ヒント: /etc/php/php.ini を編集するのではなく /etc/php/conf.d ディレクトリから拡張を有効化したり設定することもできます (例: /etc/php/conf.d/gd.ini)。

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
警告: extension=mysql は PHP 7.0 で 削除 されました。

ウェブスクリプト用に権限を抑えた MySQL ユーザーを追加することができます。また、/etc/mysql/my.cnf を編集して skip-networking 行をアンコメントすると MySQL サーバーはローカルホストからしかアクセスできなくなります。変更を適用するには MySQL の再起動が必要です。

ヒント: phpMyAdmin, Adminer, mysql-workbench などのツールをインストールしてデータベースを操作するのも良いでしょう。

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
ノート: リモートデバッグセッションを常時起動してデバッグクライアントに接続するには xdebug.remote_autostart=on も設定する必要があります。

IMAP

php-imap をインストールして /etc/php/php.ini の以下の行をアンコメントしてください:

extension=imap

キャッシュ

PHP には2種類のキャッシュが存在します: opcode/bytecode キャッシュと userland/user data キャッシュです。両方を使うことでアプリケーションの速度を相当上げることができるため、できるかぎり有効にすることを推奨します。

  • Zend OPCacheopcode のキャッシュだけを行います。
  • APCuuserland のキャッシュだけを行います。

キャッシュを最適化するために、両方を有効にしてください。以下の #OPCache#APCu の両方を読むことで有効化できます。

OPCache

OPCache は標準の PHP ディストリビューションに付属しているため、OPCache は PHP 設定ファイルに以下の行を追加あるいはアンコメントするだけで有効化できます:

/etc/php/php.ini
zend_extension=opcache

PHP のウェブサイトにある 公式エントリ に OPCache のオプションのリストや推奨される設定が載っています。

警告: マニュアルの 推奨設定 を適用するときは、設定手順の下に書かれている 最初のコメント も注意深く読むようにしてください。設定によっては zend_mm_heap corrupted などのエラーが発生するようになってしまうことがあります。

APCu

APCu は php-apcu パッケージでインストールできます。/etc/php/conf.d/apcu.ini の以下の行をアンコメントするか、以下の行を PHP 設定ファイルに追加することで有効にします:

extension=apcu

APCu の作者は推奨される設定を 記述 しています:

  • apc.enabled=1apc.shm_size=32Mデフォルト値 なので設定しなくても問題ありません。
  • その一方 apc.ttl=7200多少効果がある ようです。
  • 最後に apc.enable_cli=1 はマニュアルでは 非推奨 になっていますが、ownCloud などソフトウェアによっては必須です。
ヒント: 上記の設定は APCu 専用の /etc/php/conf.d/apcu.ini あるいは PHP 設定ファイルに直接記述することができます。拡張を二回有効にするとシステムログにエラーが残るので止めてください。

開発ツール

Aptana Studio

Aptana Studio は PHP でのプログラミングやウェブ開発に向いている IDE です。aptana-studioAUR パッケージでインストールできます。現在のバージョン (3.2.2) には PHP デバッガは含まれていません。

Eclipse PDT

Eclipse PDT は Eclipse の PHP バージョンです。eclipse-php パッケージでインストールできます。詳しくは 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 フラグを立ててください。

参照