「PHP」の版間の差分
細 (1版 をインポートしました) |
Kusanaginoturugi (トーク | 投稿記録) (→インストール: 記事を更新) |
||
(4人の利用者による、間の20版が非表示) | |||
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}} パッケージを[[インストール]]してください。 |
|
+ | 古いバージョンの 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 はスタンドアロンで実行することもできますが、普通は Apache や nginx、lighttpd などの http サーバーと一緒に使われます。 |
||
+ | PHP はスタンドアロンで実行できますが、通常は Web サーバで使用します。そのためには、追加のパッケージをインストールして、設定ファイルを編集する必要があります。一般的な設定については、[[Apache HTTP Server#PHP|Apache HTTP Server]]、 [[nginx#PHP_implementation|nginx]]、 [[lighttpd#PHP|lighttpd]] および [[Hiawatha#CGI|Hiawatha]] を参照してください。PHP スクリプトを 純粋な CGI として実行するには、{{Pkg|php-cgi}} パッケージが必要です。 |
||
− | * '''スタンドアロン''': {{ic|php -S localhost:8000 -t public_html/}}。[http://docs.php.net/manual/en/features.commandline.webserver.php ドキュメント] を参照 |
||
− | * '''Apache''': [[Apache HTTP Server|Apache HTTP Server]] を参照 |
||
− | * '''lighttpd''': [[lighttpd|lighttpd]] を参照 |
||
− | * '''nginx''': [[nginx|nginx]] を参照 |
||
== 設定 == |
== 設定 == |
||
メインの PHP 設定ファイルは {{ic|/etc/php/php.ini}} にあり豊富なドキュメントが揃っています。 |
メインの PHP 設定ファイルは {{ic|/etc/php/php.ini}} にあり豊富なドキュメントが揃っています。 |
||
− | * {{ic|/etc/php/php.ini}} には以下のようにタイムゾーンを設定することが推奨されています ([http://www.php.net/manual/ |
+ | * {{ic|/etc/php/php.ini}} には以下のようにタイムゾーンを設定することが推奨されています ([http://www.php.net/manual/ja/timezones.php タイムゾーンのリスト]): |
− | date.timezone = |
+ | 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}} にある事を確認してください。これは他の場所にインストールされたウェブアプリの場合は当然異なります。例: |
||
− | * 必要であれば、{{ic|/etc/httpd/conf/extra/php5_module.conf}} に、{{ic|.phtml}} のファイルハンドラを追加してください: |
||
+ | |||
− | DirectoryIndex index.php index.phtml index.html |
||
+ | open_basedir = /srv/http/:/var/www/:/home/:/tmp/:/var/tmp/:/var/cache/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/ |
||
== 拡張 == |
== 拡張 == |
||
36行目: | 36行目: | ||
よく使われる 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 |
+ | extension=gd |
+ | |||
+ | {{Tip|{{ic|/etc/php/php.ini}} を編集するのではなく {{ic|/etc/php/conf.d}} ディレクトリから拡張を有効化したり設定することもできます (例: {{ic|/etc/php/conf.d/gd.ini}})。}} |
||
+ | |||
+ | === imagemagick === |
||
+ | {{Pkg|imagemagick}} と PHP の拡張ライブラリをインストールしてから、PHP の設定に {{ic|1=extension=imagick}} を追加することで使うことができます。 |
||
+ | |||
+ | ==== AUR を使う ==== |
||
+ | {{Pkg|php-imagick}} をインストールしてください。{{Pkg|imagemagick}} も依存パッケージとしてインストールされます。パッケージをインストールすると {{ic|/etc/php/conf.d/imagick.ini}} が作成されるため自動的に PHP の設定で拡張が有効になります。 |
||
− | === |
+ | ==== ''pecl'' を使う ==== |
− | {{Pkg|imagemagick}} を |
+ | 先に {{Pkg|imagemagick}} をインストールしてください。''pecl'' バイナリは {{AUR|php-pear}} パッケージに含まれています。''pecl'' をインストールしたら、以下のコマンドで ''imagemagick'' の PHP 拡張をインストール: |
− | + | # pecl install imagick |
|
+ | そして以下のコマンドで拡張を有効化: |
||
− | === pthreads エクステンション === |
||
+ | # echo 'extension=imagick'>/etc/php/conf.d/imagick.ini |
||
− | POSIX マルチスレッディングを使いたい場合、pthreads エクステンションが必要になります。{{ic|pecl}} を使って pthreads (http://pecl.php.net/package/pthreads) をインストールするにはスレッドセーフティフラグ {{ic|--enable-maintainer-zts}} を付けてコンパイルされた PHP を使わなくてはなりません。元のパッケージにフラグをつけて再ビルドするのが一番簡単な方法になります。 |
||
+ | === pthreads === |
||
− | 手順は [[PHP pthreads extension]] のページに記載されています。 |
||
+ | POSIX マルチスレッディングを使いたい場合、pthreads 拡張が必要になります。{{ic|pecl}} を使って pthreads (http://pecl.php.net/package/pthreads) をインストールするにはスレッドセーフティフラグ {{ic|--enable-maintainer-zts}} を付けてコンパイルされた PHP を使わなくてはなりません。元のパッケージにフラグをつけて再ビルドするのが一番簡単な方法になります。 |
||
+ | 手順は [[PHP pthreads 拡張]]のページに記載されています。 |
||
− | === mcrypt === |
||
− | {{ic|mcrypt}} モジュールが使いたい場合、{{Pkg|php-mcrypt}} をインストールして {{ic|/etc/php/php.ini}} の {{ic|1=extension=mcrypt.so}} をアンコメントしてください: |
||
− | extension=mcrypt.so |
||
=== PCNTL === |
=== PCNTL === |
||
58行目: | 67行目: | ||
PCNTL を使うことでサーバーサイドのマシンにプロセスを直接作成することができるようになります。これでやりたいことがやれるようになる一方、状況をぐちゃぐちゃにするパワーを PHP に与えることにもなります。そのため、他の便利なエクステンションと同じようにロードすることはできない PHP エクステンションです。この拡張を有効にするには (デフォルトでは有効になっていません) PCNTL を PHP に組み込んでコンパイルする必要があります。 |
PCNTL を使うことでサーバーサイドのマシンにプロセスを直接作成することができるようになります。これでやりたいことがやれるようになる一方、状況をぐちゃぐちゃにするパワーを PHP に与えることにもなります。そのため、他の便利なエクステンションと同じようにロードすることはできない PHP エクステンションです。この拡張を有効にするには (デフォルトでは有効になっていません) PCNTL を PHP に組み込んでコンパイルする必要があります。 |
||
− | == |
+ | === 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', '', 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'') |
||
+ | ウェブスクリプト用に権限を抑えた 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.eclipse.org/pdt/ Eclipse PDT] は Eclipse の PHP バージョンです。{{AUR|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] は |
+ | [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 デバッガは含まれていません。 |
||
− | === |
+ | === 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 はもう必要ないなら削除してかまいません |
||
− | ==== |
+ | ==== ユーザー全体のインストールの許可 ==== |
− | 以下の行を {{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行目: | 237行目: | ||
zip エクステンションが有効になっていることを確認してください。 |
zip エクステンションが有効になっていることを確認してください。 |
||
{{hc|$ grep zip /etc/php/php.ini|2= |
{{hc|$ grep zip /etc/php/php.ini|2= |
||
− | extension=zip |
+ | 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 フラグを立ててください。 |
||
== 参照 == |
== 参照 == |
2023年7月17日 (月) 19:22時点における最新版
PHP は広く使われている多目的のスクリプト言語で、特にウェブ開発に適しており HTML に埋め込むことができます。
インストール
古いバージョンの PHP は php53AUR、 php55AUR、 php56AUR、 php70AUR、 php71AUR、 php72AUR、php73AUR、php74AUR、php80AUR、php81AUR および php82AUR.パッケージなどが AUR に存在します。これらは openSUSE Build Service を使ったバイナリビルドです。
起動
PHP はスタンドアロンで実行できますが、通常は Web サーバで使用します。そのためには、追加のパッケージをインストールして、設定ファイルを編集する必要があります。一般的な設定については、Apache HTTP Server、 nginx、 lighttpd および Hiawatha を参照してください。PHP スクリプトを 純粋な CGI として実行するには、php-cgi パッケージが必要です。
設定
メインの PHP 設定ファイルは /etc/php/php.ini
にあり豊富なドキュメントが揃っています。
/etc/php/php.ini
には以下のようにタイムゾーンを設定することが推奨されています (タイムゾーンのリスト):
date.timezone = Asia/Tokyo
- 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 フラグを立ててください。