MacのWeb共有のサイトからPHPとPostgreSQLが使えるようにする(2)

動作環境、前提条件

  • Mac OS X 10.6.8
  • PostgreSQL 8.4.10 (/usr/localにソースからビルドしてインストール済み)
  • Macに元々入っているWeb共有(apache)とPHPから、前回の方法でエクステンションだけビルドしてPostgreSQLを呼び出せるようにしようとしたが、できなかった。
  • 今回はPHPPostgreSQL連携機能込みでソースから作り直し、Macに元々入っているWeb共有(apache)からPHPを呼び出す形にする。

ビルド

下記のように、--with-pgsql 、 --prefix=/usr/local 、 --with-apxs2=/usr/sbin/apxs のオプションをつけてconfigureし、その後makeする。

$ pwd
/usr/local
$ ls php-5.3.15.tar.gz 
php-5.3.15.tar.gz
$ rm -r php-5.3.15
$ sudo rm -r ./lib/php
$ tar xf php-5.3.15.tar.gz 
$ cd php-5.3.15
$ ./configure --with-pgsql --prefix=/usr/local --with-apxs2=/usr/sbin/apxs
        :
        :
Thank you for using PHP.
$ make
$ make test
        :
        :
Do you want to send this report now? [Yns]: n
$

ビルドは成功したようだ。

インストール、設定

ビルドできたようなので、インストールする。

$ sudo make install
Password:
Installing PHP SAPI module:       apache2handler
/usr/share/httpd/build/instdso.sh SH_LIBTOOL='/usr/share/apr-1/build-1/libtool' libs/libphp5.so /usr/libexec/apache2
/usr/share/apr-1/build-1/libtool --mode=install cp libs/libphp5.so /usr/libexec/apache2/
cp libs/libphp5.so /usr/libexec/apache2/libphp5.so
Warning!  dlname not found in /usr/libexec/apache2/libphp5.so.
Assuming installing a .so rather than a libtool archive.
chmod 755 /usr/libexec/apache2/libphp5.so
[activating module `php5' in /private/etc/apache2/httpd.conf]
Installing PHP CLI binary:        /usr/local/bin/
Installing PHP CLI man page:      /usr/local/man/man1/
Installing build environment:     /usr/local/lib/php/build/
Installing header files:          /usr/local/include/php/
Installing helper programs:       /usr/local/bin/
  program: phpize
  program: php-config
Installing man pages:             /usr/local/man/man1/
  page: phpize.1
  page: php-config.1
Installing PEAR environment:      /usr/local/lib/php/
[PEAR] Archive_Tar    - installed: 1.3.7
[PEAR] Console_Getopt - installed: 1.3.0
[PEAR] Structures_Graph- installed: 1.0.4
[PEAR] XML_Util       - installed: 1.2.1
[PEAR] PEAR           - installed: 1.9.4
Wrote PEAR system config file at: /usr/local/etc/pear.conf
You may want to add: /usr/local/lib/php to your php.ini include_path
/usr/local/php-5.3.15/build/shtool install -c ext/phar/phar.phar /usr/local/bin
ln -s -f /usr/local/bin/phar.phar /usr/local/bin/phar
Installing PDO headers:          /usr/local/include/php/ext/pdo/
$

システム領域にもともと入っていた/usr/libexec/apache2/libphp5.soを置き換えてしまった。これは美しくない。残念。
どうやら/etc/apache2/httpd.confも勝手に置き換わってしまうようだ。
メーカーのサポート領域とユーザーのカスタマイズ領域をはっきり分けるには、Apacheも/usr/localに作るのが理想のようだが、MachttpdAppleが定期的に更新してくれており、これを使いたいので、現状でがまんする。

$ which httpd
/usr/sbin/httpd
$ httpd -v
Server version: Apache/2.2.22 (Unix)
Server built:   Jul 12 2012 15:09:37

ただし、今後Appleの更新でもしlibphp5.soが置き換わる場合、今回作った分がpostgres連携機能ごと消えてしまうような気がするので、念のためlibphp5.soを/usr/local/libexecに置き、apacheからもそっちを見ることにする。

$ sudo cp -p /usr/libexec/apache2/libphp5.so /usr/local/libexec
Password:
$ ls -l /usr/local/libexec/libphp5.so 
 -rwxr-xr-x  1 root  wheel  8664312 11 24 15:20 /usr/local/libexec/libphp5.so
$ cd /etc/apache2
$ sudo vi httpd.conf
httpd.conf編集内容)
        :
        :
#LoadModule php5_module        libexec/apache2/libphp5.so
LoadModule php5_module        /usr/local/libexec/libphp5.so
        :
        :

動作確認

ここを参考にテストページを作り、PostgreSQLへの接続を含めて動作することを確認した。
(テストプログラムの作者様に、この場を借りてお礼申し上げます。)