macOS Monterey より前のバージョンにバンドルされている、PHP の使用法
PHP は、Mac OS X バージョン 10.0.0 以降、 macOS Monterey (12.0.0) より前の MacOS に標準添付されています。 デフォルトのウェブサーバーで PHP を有効にするには、Apache 設定ファイル httpd.conf で数行のコメントを解除する必要があります。 一方、CGI や CLI はデフォルトで有効になっています (ターミナルから簡単に利用できます)。
PHP を有効にするには以下の手順を使用してください。 これは、ローカルの開発環境を手早く設定する方法を示したものです。 常に PHP を最新バージョンに更新することを 強く推奨します。 多くのソフトウェアでは、新しいバージョンでは多くのバグが修正されています。 また機能追加もされています。PHP も同様です。 詳細は、適切な macOS インストールドキュメントを参照ください。 以下の手順は初心者を対象としたもので、 まずデフォルトの設定で動作させるための手順を示しています。 すべてのユーザーが、新しいパッケージ版をコンパイルしてインストールすることを推奨します。
標準的なインストール方法は mod_php を使用するものです。macOS 上の Apache web server (デフォルトのウェブサーバーで、System Preferences からアクセスできます) 上に、mod_php を組み込むには次のようにします。
-
Apache の設定ファイルを開きます。デフォルトでは
/private/etc/apache2/httpd.conf にあります。
Finder
あるいはSpotlight
を使用してこれを見つけることは難しいでしょう。 このファイルはプライベート設定されており、その所有者はroot
ユーザーだからです。注意: Unix ベースのテキストエディタ、たとえば
nano
を用いて、ターミナルでこのファイルを開きます。このファイルの所有者はroot
なので、sudo
コマンドを使用して (root
として) 開く必要があります。つまり、ターミナル上でsudo nano /private/etc/apache2/httpd.conf
と入力します (その後、パスワードを聞かれます)。 覚えておくべき nano コマンドは次のとおりです。^w
(検索)、^o
(保存) そして^x
(終了)。 ここで^
は Ctrl キーを表します。注意: Mac OS X 10.5 より前のバージョンにバンドルされている PHP および Apache は、バージョンが古いものです。その場合、Apache の設定ファイルは /etc/httpd/httpd.conf となります。
-
テキストエディタで、次のような行 (これらのふたつの行は並んでいないこともあります。 それぞれをファイル中で探してください) のコメントをはずします (# を削除します)。
# LoadModule php5_module libexec/httpd/libphp5.so # AddModule mod_php5.c
-
指定した拡張子 (例: .php .html および .inc が PHP でパースされるようにします。
以下のような行が httpd.conf にあれば (Mac Panther 以降にはあります)、 PHP を有効にするだけで .php ファイルが自動的に PHP で処理されます。
<IfModule mod_php5.c> # If php is turned on, we respect .php and .phps files. AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps # Since most users will want index.php to work we # also automatically enable index.php <IfModule mod_dir.c> DirectoryIndex index.html index.php </IfModule> </IfModule>
注意:
Mac OS X 10.5 (Leopard) より前のバージョンには PHP 5 ではなく PHP 4 がバンドルされています。その場合は、ここまでの説明にある 5 という部分を 4 に読み替えてください。
- DirectoryIndex でデフォルトインデックスファイルが読み込まれるようにします。 これも httpd.conf で設定します。典型的なパターンは index.php および index.html でしょう。デフォルトでは index.php が有効になります。上で見たような設定がすでにあるからです。 これを適切に調整しましょう。
- php.ini の場所を設定するか、デフォルトを使用します。 macOS におけるデフォルトの場所は /usr/local/php/php.ini で、 phpinfo() をコールするとこの情報を表示します。 php.ini を使用しない場合は、PHP はすべてデフォルト値を使用します。 php.ini ファイルはどこにおけばいいのですか? が、関連する FAQ です。
-
DocumentRoot
を配置あるいは設定します。 これは、すべてのウェブファイルのルートディレクトリとなります。 このディレクトリ内のファイルはウェブサーバーで処理されるようになるので、 PHP ファイルは PHP でパースしてからブラウザに出力されます。 典型的なデフォルトのパスは /Library/WebServer/Documents ですが、これは httpd.conf で別の場所にすることができます。 また、各ユーザーの DocumentRoot は /Users/yourusername/Sites となります。 -
phpinfo() ファイルを作成します。
phpinfo() 関数は、PHP についての情報を表示します。 DocumentRoot 内に、次のような PHP コードを含むファイルを作成してください。
<?php phpinfo(); ?>
-
Apache を再起動し、先ほど作成した PHP ファイルを読み込みます。
再起動するには、シェルで
sudo apachectl graceful
を実行するか、あるいは macOS System Preferences で "Personal Web Server" オプションを使用して停止/起動します。 デフォルトでは、ローカルファイルをブラウザで読み込むには http://localhost/info.php のような URL を指定します。 あるいは、各ユーザーディレクトリの DocumentRoot の場合は http://localhost/~yourusername/info.php のようになります。
CLI (あるいは旧バージョンの CGI)
は、php という名前で、おそらく
/usr/bin/php にあります。
ターミナルを開き、PHP マニュアルの
Open up the terminal, read the
PHP をコマンドラインから使用する
を読んだうえで php -v
を実行してみましょう。
これは、PHP バイナリのバージョンを表示します。
phpinfo() をコールしても、この情報を取得できます。
User Contributed Notes 2 notes
You only have to uncomment:
#LoadModule php5_module libexec/apache2/libphp5.so
This is gone:
# AddModule mod_php5.c
The statement in 3 was changed to:
<IfModule mime_module>
#
# TypesConfig points to the file containing the list of mappings from
# filename extension to MIME-type.
#
TypesConfig /private/etc/apache2/mime.types
#
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz
#
# AddEncoding allows you to have certain browsers uncompress
# information on the fly. Note: Not all browsers support this.
#
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
#
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
#
# AddHandler allows you to map certain file extensions to "handlers":
# actions unrelated to filetype. These can be either built into the server
# or added with the Action directive (see below)
#
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#
#AddHandler cgi-script .cgi
# For type maps (negotiated resources):
#AddHandler type-map var
#
# Filters allow you to process content before it is sent to the client.
#
# To parse .shtml files for server-side includes (SSI):
# (You will also need to add "Includes" to the "Options" directive.)
#
#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml
</IfModule>
Extra MIME types can either be added to the file /private/etc/apache2/mime.types or by using an AddType directive as commented on above.
setup apache + php environment on macOS 10.12.6
step 1: start httpd by apachectl
> sudo apachectl start
step 2: find httpd.conf
> sudo apachectl -t -D DUMP_INCLUDES
step 3: edit conf, eg: /opt/local/etc/apache2/httpd.conf
> sudo vim /opt/local/etc/apache2/httpd.conf
step 4: Load php module before <IfModule unixd_module>, eg:
```
LoadModule php5_module /usr/libexec/apache2/libphp5.so
<IfModule unixd_module>
```
step 5: add mod_php5.c end of httpd.conf
```
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule mod_dir.c>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>
```
step 6: save and quit
step 7: restart httpd
> sudo apachectl restart
step 8: write demo.php , test configuration
```
<?php
phpinfo();
?>
```
step 9: copy demo.php to "DocumentRoot", you can find by httpd.conf
step 10: visit demo.php
all done.