MacのWeb共有のサイトからPHPとPostgreSQLが使えるようにする(2)
動作環境、前提条件
- Mac OS X 10.6.8
- PostgreSQL 8.4.10 (/usr/localにソースからビルドしてインストール済み)
- Macに元々入っているWeb共有(apache)とPHPから、前回の方法でエクステンションだけビルドしてPostgreSQLを呼び出せるようにしようとしたが、できなかった。
- 今回はPHPをPostgreSQL連携機能込みでソースから作り直し、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に作るのが理想のようだが、MacのhttpdはAppleが定期的に更新してくれており、これを使いたいので、現状でがまんする。
$ 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 : :