あとはコードを書くだけ,はじめに作る開発環境構築ベストプラクティス

第1回 PHP開発環境の構築[1]―PHPが実行できるまで

この記事を読むのに必要な時間:およそ 3 分

webサーバで動作させる

次はPHPをwebサーバで動作させる場合です。webアプリケーションを開発する場合は必須になります。

最も簡単な方法がPHPのビルトインサーバを利用する方法です。以下のようなコマンドで,カレントディレクトリをドキュメントルートとしたwebサーバを起動することができます。

$ php -S localhost:8888

モダンなwebアプリケーションフレームワークではこの機能を利用して開発を行えるものもあります。Laravelのartisan serveコマンドなどがその例です。

デフォルトの設定では,これらはindex.phpというファイル名でファイルと作っておくと,http://localhost:8888/にブラウザからアクセスした際に自動的にこのファイルが実行されます。つまりhttp://localhost:8888/index.phpというURLを指定した場合と同様の動作になります。

以下のようにphpinfo()を実行するファイルを作成してそこでビルトインサーバを立ち上げ,http://localhost:8888/で確認してみましょう。phpinfo()はPHPの設定項目などをHTMLで見やすく表示するための確認用の関数です。

index.php

<?php
phpinfo();

また簡単にApacheやnginxなどで動作させる際は,MAMPやXAMPPなどの全部入りパッケージを利用するのが簡単です。これらはwebアプリケーションを動作させるために必要なもの(Apache,PHP,MySQLなど)がまとまって入っており,簡単にアプリケーションを作り始めるには最適なものになっています。バージョンの指定がしづらかったり,細かい設定がきかないという融通の効かなさはありますが,入門の際はこちらを触ってみるのもよい手かと思います。

実際にサーバにセットアップする際はApache上でPHPを動かすのが最もシンプルに行えます。パッケージマネージャでApache(httpd)とphpをインストールすれば自動的にwebサーバがPHPを実行可能になることが多いです。

CentOSでの例

$ yum install httpd php

動作を試してみて,そもそもアクセスが不可能な場合は,動作環境が仮想サーバであればそのファイアーウォールの設定や,webサーバが起動しているかどうかを改めて確認しましょう。

webサーバが動作していてもそのままコードが見えてしまう場合は,PHPが正しく動作せずHTMLと同様に出力されている状態です。PHPがインストールされているかどうか,Apacheであればモジュールがきちんと読み込めているかなど,ログなども見ながら原因を切り分けて探していきましょう。

PHPの基本的な設定

PHPの設定は php.iniというファイルに記述します。いま動作しているPHPのphp.iniの場所は,php -iコマンドの出力から確認することができます。

$ php -i | grep php.ini
Configuration File (php.ini) Path => /etc

PHPのスクリプト内でini_set()という関数を利用することでも設定値を変更することができます。アプリケーションフレームワークなどでは,フレームワークの設定ファイルにこの方法でPHPの設定値が変更されている場合もあります。

まず設定すべきはdate.timezoneです。これはPHPで利用するタイムゾーンの設定で,date()関数などの動作に関わります。日付を日本に設定したい場合はAsia/Tokyoに設定します。

php.ini

date.timezone = Asia/Tokyo

PHP5.6ではこの設定を行わないと以下のような警告が出ます。

PHP Warning:  Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in Unknown on line 0

次に知っておくべきはmemory_limitです。デフォルトでは128MBになっており,基本的にこの値で十分です。稀に大きなメモリを消費するプログラムを実行する際はメモリの限界に達して以下の様なエラーが出ることがあります。

Fatal error: Allowed memory size of *** bytes exhausted (tried to allocate *** bytes) in ...

こういった場合はプログラムのメモリ使用量を減らすと同時にmemory_limitの値を大きくすることを検討します。

他にもさまざまな設定項目があります。エラーの表示レベルを操作するerror_reportingや,文字コードを設定するdefault_charsetmbstring.languageなどです。詳細はPHPのドキュメントを読んでみてください。

webサーバでPHPを動作させている場合,php.iniに記述した設定はwebサーバを再起動することで反映されるので,忘れずに再起動を行いましょう。

おわりに

今回はPHPの動作環境を構築するために必要な部分をまとめました。PHPは動作環境の構築は比較的簡単ではありますが,インストールの方法などが多数あるので,混乱しないようにしたいものです。

次回は実際にPHPのアプリケーションを作る際のポイントやデプロイの方法などについてみていきます。

teratail【テラテイル】|思考するエンジニアのためのQAプラットフォーム
https://teratail.com/

著者プロフィール

出川幾夫(でがわいくお)

レバレジーズ株式会社 teratail開発エンジニア。

サーバサイドの開発を中心に,フロントエンドやインフラなど幅広い領域を担当。

物心ついた時からのApple信者で,Appleのデバイスをそれぞれじっくり使い倒すのを至上の喜びとしている。好きな野菜はネギ。

Twitter:@ikuwow

コメント

コメントの記入