Apacheが利用している現在のPHPモジュールからphp.ini(デフォルト)へのフルパスを調べる
ApacheはPHPのモジュールを読み込んで「Apache Handler」として実行できます。
「LoadModule」によってモジュールを読み込むだけで、
簡単にApacheからPHPを利用することができ便利です。
しかしその読み込んだモジュールが、
どこの「php.ini」をデフォルトで利用するのかを考えたことはありますでしょうか。
ここでは読み込んだPHPモジュールによって、
デフォルトの「php.ini」の場所がどう変わるのかという点をご紹介します。
概要
Apacheが利用している現在のPHPモジュールからphp.ini(デフォルト)へのフルパスを調べる
サーバーやPCにPHPをインストールた場合、
ターミナルからPHPのバージョンを確認することもあるかもしれません。
しかし、利用目的が「Aapche Handler」として、
モジュール実行する場合には、
PHP実行ファイルから直接バージョンを確認しても意味がありません。
Aapche HandlerとしてPHPモジュール有効化
「Aapche Handler」としてモジュールをロードしている場合、
モジュール自身の情報を確認する必要があります。
Apacheで読み込みを行う標準でバンドルされているPHPの情報は、
既に配置されているhttpd.conf上にコメントアウトされ記述されています。
コメントアウトを解除して有効にするだけでPHPがモジュールとして利用可能になります。
なお、httpd.confファイルは通常ではターミナルから編集する必要があります。
ここではFinder操作ができるエディタで編集を行っています。
Apacheの再起動とphpinfo()の実行
httpd.confを編集したら、Apacheの再起動を行います。
標準Apache(OSX10.7)ではシステム環境設定から再起動が行えます。
※10.8以降はターミナルからの操作が必要です。
「Web共有」を一旦OFFにして、すぐにONにすると再起動できます。
次に、標準Apacheのドキュメントルートに対して、
以下を記述した「index.php」ファイルを配置します。
※ファイル名は何でも構いません。
ドキュメントルートはhttpd.confにパスが記述されています。
1 2 3 4 5 6 |
# # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # DocumentRoot "/Library/WebServer/Documents" |
「/Library/WebServer/Documents/index.php」を配置したら、
ブラウザを起動し「http://localhost/index.php」にアクセスし、
「phpinfo()」の情報を確認します。
以下のように表示されます。
Configure Command部を以下に転記しておきます。
1 2 3 |
Configure Command '/private/var/tmp/apache_mod_php/apache_mod_php-66.9~1/php/configure' '--prefix=/usr' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--disable-dependency-tracking' '--sysconfdir=/private/etc' '--with-apxs2=/usr/sbin/apxs' '--enable-cli' '--with-config-file-path=/etc' '--with-libxml-dir=/usr' '--with-openssl=/usr' '--with-kerberos=/usr' '--with-zlib=/usr' '--enable-bcmath' '--with-bz2=/usr' '--enable-calendar' '--with-curl=/usr' '--enable-dba' '--enable-ndbm=/usr' '--enable-exif' '--enable-ftp' '--with-gd' '--with-freetype-dir=/BinaryCache/apache_mod_php/apache_mod_php-66.9~1/Root/usr/local' '--with-jpeg-dir=/BinaryCache/apache_mod_php/apache_mod_php-66.9~1/Root/usr/local' '--with-png-dir=/BinaryCache/apache_mod_php/apache_mod_php-66.9~1/Root/usr/local' '--enable-gd-native-ttf' '--with-icu-dir=/usr' '--with-iodbc=/usr' '--with-ldap=/usr' '--with-ldap-sasl=/usr' '--with-libedit=/usr' '--enable-mbstring' '--enable-mbregex' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--without-pear' '--with-pdo-mysql=mysqlnd' '--with-mysql-sock=/var/mysql/mysql.sock' '--with-readline=/usr' '--enable-shmop' '--with-snmp=/usr' '--enable-soap' '--enable-sockets' '--enable-sqlite-utf8' '--enable-suhosin' '--enable-sysvmsg' '--enable-sysvsem' '--enable-sysvshm' '--with-tidy' '--enable-wddx' '--with-xmlrpc' '--with-iconv-dir=/usr' '--with-xsl=/usr' '--enable-zend-multibyte' '--enable-zip' '--with-pcre-regex=/usr' '--with-pgsql=/usr' '--with-pdo-pgsql=/usr' |
青線部では「–with-config-file-path=/etc」と表示されています。
このオプション指定によって、デフォルトの「php.ini」ディレクトリが決定されます。
下の行で「Configuretion File(php.ini)Path => 」で表示されているパスが、
デフォルトで「php.ini」が読み込まれるファイルパスを示しています。
※オプション設定値と同じ。
このことから「Aapche Handler」としてPHPをモジュール実行した場合、
デフォルトとして「/etc/php.ini」ファイルが読み込まれることがわかります。
ただし、php.iniは以下のようなディレクトリに配置しても、
それぞれが有効になります。
- Apache 2 における PHPIniDir ディレクティブ(httpd.confで指定)
- 現在の作業ディレクトリ(URLのカレントディレクトリ上)
- Web サーバーのディレクトリ(ドメインのルートディレクトリ上)
- コンパイル時のオプション –with-config-file-path(デフォルトパス)
ローカルサーバーとして運用する上では、
このデフォルトパスを意識する必要はそんなにないかもしれません。
httpd.confに対して「PHPIniDir ディレクティブ」で、
直接、php.iniを設定すれば、その設定を有効にすることができます。
ただ、最終的に読み込まれる「php.ini」が、
このデフォルト設定であることは知っておいた方が困惑することが減るかもしれません。
当サイト内のコンテンツおよび画像を含むすべてにおいて、管理人アルゴリズンが著作権を保持しております。
当サイトでご紹介しております写真等につきましては著作権の放棄はしませんが、
ライセンスフリーでご利用いただいて構いません。
コンテンツを有益であると感じていただけましたら非常に光栄です。
ありがとうございます。
サイト内コンテンツを引用される際には、出典元として当サイト(個別記事)へのリンクをお願いいたします。
申し訳ございませんが、無断転載、複製をお断りさせて頂いております。
公開日: