「PHP」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(Pkg/AUR テンプレートの更新)
(→‎インストール: 記事を更新)
 
(2人の利用者による、間の10版が非表示)
13行目: 13行目:
 
{{Pkg|php}} パッケージを[[インストール]]してください。
 
{{Pkg|php}} パッケージを[[インストール]]してください。
   
古いバージョンの PHP は {{AUR|php56}} パッケージなど AUR に存在します。
+
古いバージョンの PHP は {{AUR|php53}}、 {{AUR|php55}}、 {{AUR|php56}} {{AUR|php70}}、 {{AUR|php71}}、 {{AUR|php72}}、{{AUR|php73}}、{{AUR|php74}}、{{AUR|php80}}、{{AUR|php81}} および {{AUR|php82}}.パッケージなど AUR に存在します。これらは [https://build.opensuse.org/project/show/home:el:archphp openSUSE Build Service] を使ったバイナリビルドです。
   
  +
== 起動 ==
PHP スクリプトを普通の CGI として実行するには、{{Pkg|php-cgi}} パッケージが必要です。
 
   
  +
PHP はスタンドアロンで実行できますが、通常は Web サーバで使用します。そのためには、追加のパッケージをインストールして、設定ファイルを編集する必要があります。一般的な設定については、[[Apache HTTP Server#PHP|Apache HTTP Server]]、 [[nginx#PHP_implementation|nginx]]、 [[lighttpd#PHP|lighttpd]] および [[Hiawatha#CGI|Hiawatha]] を参照してください。PHP スクリプトを 純粋な CGI として実行するには、{{Pkg|php-cgi}} パッケージが必要です。
== セットアップ ==
 
PHP はスタンドアロンで実行することもできますが、普通は Apache や nginx、lighttpd などの http サーバーと一緒に使われます。
 
* '''スタンドアロン''': {{ic|php -S localhost:8000 -t public_html/}}。[http://docs.php.net/manual/ja/features.commandline.webserver.php ドキュメント] を参照
 
* '''Apache''': [[Apache HTTP Server]] を参照
 
* '''lighttpd''': [[lighttpd]] を参照
 
* '''nginx''': [[nginx]] を参照
 
* '''Hiawatha''': [[Hiawatha]] を参照。
 
   
 
== 設定 ==
 
== 設定 ==
29行目: 23行目:
   
 
* {{ic|/etc/php/php.ini}} には以下のようにタイムゾーンを設定することが推奨されています ([http://www.php.net/manual/ja/timezones.php タイムゾーンのリスト]):
 
* {{ic|/etc/php/php.ini}} には以下のようにタイムゾーンを設定することが推奨されています ([http://www.php.net/manual/ja/timezones.php タイムゾーンのリスト]):
date.timezone = Europe/Berlin
+
date.timezone = Asia/Tokyo
   
 
* PHP のコードをデバッグするためにエラーを表示したい場合、{{ic|/etc/php/php.ini}} の {{ic|display_errors}} を {{ic|On}} に変更してください:
 
* PHP のコードをデバッグするためにエラーを表示したい場合、{{ic|/etc/php/php.ini}} の {{ic|display_errors}} を {{ic|On}} に変更してください:
 
display_errors=On
 
display_errors=On
   
  +
* [https://php.net/open-basedir open_basedir] ディレクティブは、PHP がアクセスできるパスを制限することで、セキュリティを向上させますが、その代わりに通常のプログラムの実行に支障をきたす可能性があります。PHP 7.0 以降、このディレクティブは上流にあわせるかたちで[https://archlinux.org/news/php-70-packages-released/ デフォルトでは設定されていない]ため、使用したいユーザーは手動で設定する必要があります。すべてのシンボリックリンクは解決されるので、シンボリックリンクでこの制限を回避することはできません。{{ic|nextcloud}} や {{ic|phpmyadmin}} のような特定のウェブアプリのためのデフォルトの Arch パッケージは、 {{ic|/usr/share/webapps}} の下にウェブアプリをインストールし、{{ic|/etc/webapps}} の下にそれらのウェブアプリのための実際の設定ファイルを示すシンボリックリンクを作成します。そのため、{{ic|open_basedir}} を設定している場合は、これらのフォルダが両方とも {{ic|open_basedir}} にある事を確認してください。これは他の場所にインストールされたウェブアプリの場合は当然異なります。例:
{{Tip|2015年11月22日以前までは、{{Pkg|composer}} の設定は {{ic|/usr/share/php-composer/php.ini}} とは別のファイルに記述されていました。}}
 
   
  +
open_basedir = /srv/http/:/var/www/:/home/:/tmp/:/var/tmp/:/var/cache/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/
* [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/
 
   
 
== 拡張 ==
 
== 拡張 ==
45行目: 37行目:
 
# pacman -Ss php-
 
# pacman -Ss php-
   
[[AUR]] にある PHP の拡張のパッケージには名前の前に php-* または php56-* が付きます。例: {{Pkg|php-imagick}}, {{AUR|php-redis}}, {{AUR|php56-mcrypt}}。
+
[[AUR]] にある PHP の拡張のパッケージには名前の前に php-* または php56-* が付きます。例: {{Pkg|php-imagick}}, {{Pkg|php-redis}}, {{AUR|php56-mcrypt}}。
   
 
===gd===
 
===gd===
91行目: 83行目:
   
 
=== Redis ===
 
=== Redis ===
[[Redis]] をインストール・設定してから {{Aur|php-redis}} または {{Aur|phpredis-git}} パッケージをインストールしてください。
+
[[Redis]] をインストール・設定してから {{Pkg|php-redis}} または {{Aur|phpredis-git}} パッケージをインストールしてください。
   
 
それからパッケージの行をアンコメントしてください。例: {{ic|/etc/php/conf.d/redis.ini}}。
 
それからパッケージの行をアンコメントしてください。例: {{ic|/etc/php/conf.d/redis.ini}}。
164行目: 156行目:
   
 
=== Eclipse PDT ===
 
=== Eclipse PDT ===
[http://www.eclipse.org/pdt/ Eclipse PDT] は Eclipse の PHP バージョンです。{{Pkg|eclipse-php}} パッケージでインストールできます。詳しくは [[Eclipse]] を参照。
+
[http://www.eclipse.org/pdt/ Eclipse PDT] は Eclipse の PHP バージョンです。{{AUR|eclipse-php}} パッケージでインストールできます。詳しくは [[Eclipse]] を参照。
   
 
JavaScript サポートや DB クエリなどのプラグインも必要になるでしょう。
 
JavaScript サポートや DB クエリなどのプラグインも必要になるでしょう。

2023年7月17日 (月) 19:22時点における最新版

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

インストール

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

古いバージョンの PHP は php53AURphp55AURphp56AURphp70AURphp71AURphp72AURphp73AURphp74AURphp80AURphp81AUR および php82AUR.パッケージなどが AUR に存在します。これらは openSUSE Build Service を使ったバイナリビルドです。

起動

PHP はスタンドアロンで実行できますが、通常は Web サーバで使用します。そのためには、追加のパッケージをインストールして、設定ファイルを編集する必要があります。一般的な設定については、Apache HTTP Servernginxlighttpd および Hiawatha を参照してください。PHP スクリプトを 純粋な CGI として実行するには、php-cgi パッケージが必要です。

設定

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

date.timezone = Asia/Tokyo
  • PHP のコードをデバッグするためにエラーを表示したい場合、/etc/php/php.inidisplay_errorsOn に変更してください:
display_errors=On
  • open_basedir ディレクティブは、PHP がアクセスできるパスを制限することで、セキュリティを向上させますが、その代わりに通常のプログラムの実行に支障をきたす可能性があります。PHP 7.0 以降、このディレクティブは上流にあわせるかたちでデフォルトでは設定されていないため、使用したいユーザーは手動で設定する必要があります。すべてのシンボリックリンクは解決されるので、シンボリックリンクでこの制限を回避することはできません。nextcloudphpmyadmin のような特定のウェブアプリのためのデフォルトの 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
ヒント: /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-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 フラグを立ててください。

参照