PPC版MacOS Xでの覚え書き(最新のPHP5、Apache2の導入etc) IntelMacの登場以来、PPC搭載MacでのPHP環境は厳しさを増している感があります。~ WindowsではPHPもApacheもがっつりとバイナリが揃っているので、Pentiumな旧式機にWindows2000という構成でも割合どうにかなってしまうものですが、MacOS Xの場合にはバイナリの入手経路がある程度限定されてしまう事が難点です。 -MacPorts:http://www.macports.org/~ なり -Entropy PHP:http://www.entropy.ch/software/macosx/php/~ なり -DarwinPorts:http://darwinports.com/~ なりで必要なバージョンのバイナリが手に入れば言う事はないのですが、バイナリがあっても古いOS XやPPCに対応してなかったり、そもそも最新バージョンのバイナリが無かったりなどして、拡張パック使用時に「PHPが古いよ」と叱られてしまう事がPPC搭載Mac使いの人は一度位はあると思います。 '''そういう場合は最終的にはソースコードから自前でビルドするという手段を採るしかありません。''' 1.必要なモノ -Xcode tools~ Developer Toolsともいいますね。まずこれが無ければ話になりません。Mac付属のインストールDVDなり、OS X付属のXcode toolsのDVDからインストールして下さい。 -グーグル先生:http://www.google.co.jp/~ 例えば「Apache2 10.3」とか、「PHP5.3 10.5 make」等の語句を組み合わせて検索すれば、必要なバージョンを目的のOS Xにmake installする方法が書いてあるページが必ず出て来ますよ。 -ほんのちょっとのターミナルの知識~ コマンドが少々入力できれば十分です。最悪でも、cdとsudoさえ分かれば桶。 -転んでも泣かない勇気 覚悟完了したら次へ進みましょう。。。 2.基本的な参考文献にひとまず目を通す -apache2:http://httpd.apache.org/docs/2.2/install.html -PHP5:http://www.hot-linux.org/osx/?rec_no=124 この時点でチンプンカンプンなようであれば、潔く諦めましょう。。。 3.基本的な流れ -ソースコードを入手する。tar.gz圧縮のものを選ぶ事。 -ダウソしたtar.gzをホームフォルダに置く。 -ターミナルを起動 -tar.gzを「tar xvfz ファイル.tar.gz」で解凍。 -解凍して出来たフォルダに「cd ファイル」で移動。 -「./configure」する。色々ごちゃごちゃ動くので暫く放置。 -「make」する。色々ごちゃごちゃ動くので(ry -「make install」する。色(ry 4.実際にソースコードを用意 -Apache2:http://httpd.apache.org/download.cgi httpd-2.2.15.tar.gz -PHP5:http://www.php.net/downloads.php php-5.3.2.tar.gz -rep2:http://page2.skr.jp/rep2/ 5.Apache2をビルドする…その前に。~ まず初めに、現在のOS Xで動いているApacheのバージョンを確認しましょう。~ ターミナルを開いて httpd -v と入力。これで現在のApacheのバージョンが確認できます。OS X 10.5等で現時点でApacheのバージョンが2以上であれば、無理に最新バージョンにする必要はありません。というか、最悪1.3のままでもどうにかはなる(はず)んで10.2とかの人は無理にやらなくてもいい。 6.Apache2をビルドする~ 10.3系:http://sosai.blogspot.com/2008/02/apache228mac-os-x.html~ 10.3系:http://mt.mizba.net/archives/000667.php~ 10.4系:http://www.proton.jp/main/macosx/macosx10.4.html#apache2.2install~ 10.5系:http://www.hot-linux.org/osx/?rec_no=140~ 元のApache1.xとの関連:http://ar.aichi-u.ac.jp/blog/apache.html -標準のApacheを「sudo apachectl stop」で停止する。 -下記のコマンドを順番に入力(10.5でApache2.2.15をインストールする場合) $ tar xvfz httpd-2.2.15.tar.gz $ cd httpd-2.2.15 $ ./configure --enable-modules="so ssl dav" --enable-modules=rewrite --enable-suexec --enable-dav $ make $ make install 7.Apacheのパスの設定~ インストールしたApache2はapachectlコマンドで起動や停止が出来ます。しかし…このままの状態ではターミナルでapachectlコマンドをただ実行しても「/usr/local/sbin」にある元のApacheが動くだけで新たにインストールしたApache2は動かせません。~ 新たにインストールしたApache2を動かすには、インストールフォルダに「cd /usr/local/apache2/bin/」で移動するか、「/usr/local/apache2/bin/apachectl start」などのフルパス入力でapachectlを動かしてやらなければなりません。~ いちいちこんな事をやっていては日が暮れてしまうので、さっくりパスを通しちゃいましょう。。。~ インストールフォルダへのパスを通すには2つの方法があります。 -ホームフォルダの.bash_profileにインストールフォルダの/binフォルダを追記する。主に10.4以前のOS Xで主流であった方法です。http://cisco250.hp.infoseek.co.jp/Linux/path/ -path_helperを使ってパスを定義する。10.5以降のOS Xの場合はこちらで。http://d.hatena.ne.jp/koseki2/20081201/macportPath パス定義が終わったら、「echo $PATH」コマンドでパスが通ってるかどうか確認しましょう。 8.httpd.confを編集するには~ Finderの「移動→フォルダへ移動」メニューを使って、不可視フォルダ内のhttpd.confを探します。~ 標準のApache/Apache2のhttpd.confを編集する場合には、「/private/etc」内のhttpd.confを編集。~ 新たにインストールしたApache2の場合には「/usr/local/apache2/conf/」内のhttpd.confを編集します。~ OS Xのバージョンによってはhttpd.confが書き込みロックされていたり、ユーザーにフォルダの編集権限が無かったりするので、(10.5の場合は)一旦デスクトップにドラッグ&ドロップでhttpd.confを出してしまい、テキストエディットなどで編集してから再び元の場所へ戻すのが簡単です。 -とりあえず下記の内容を記入。~ LoadModule php5_module libexec/httpd/libphp5.so AddModule mod_php5.c AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps -必要に応じて「DocumentRoot」セクションでhtdocsのディレクトリを変更する。10.5の場合、元のApacheの標準DocumentRootは「/Library/WebServer/Documents/」なので、新規にApache2を入れた場合も元の標準DocumentRootに合わせておくのが無難。 9.PHP5をビルドする…その前に。~ Apacheはrep2の動作にとっては割とどうでもいいので、どちらかといえばこちらの方が重要です。最新の拡張パックはPHP5.3.x以上を要求してくるので、インストールバイナリが無い環境の場合には最新のPHPを導入するにはソースからのビルドは避けては通れません。~ が、まず初めに現在のOS Xで動いているPHPのバージョンを確認しましょう。~ テキストエディットを起動して新規ファイルに <?php phpinfo(); ?> このような一文を書き込んで保存します。保存したテキストファイルは「test_first.php」とでもリネームしましょう。~ この「test_first.php」をApacheのhtdocsフォルダに投入して、ブラウザのURLに「http://127.0.0.1/test_first.php」と入力。これで現在のPHPのバージョンが確認できます。~ OS X 10.5等で現時点でPHPのバージョンが5.3以上であれば、無理に最新バージョンにする必要はありません。 10.PHP5をビルドする~ 10−1.とりあえず正攻法 10.3系:http://blogs.grf-design.com/archives/2006/01/install_php_5_o_1.html~ 10.4/5系:http://d.hatena.ne.jp/boto/20090922/1253608666~ 元のPHPの上書き方法など:http://www.hot-linux.org/osx/?rec_no=124~ -元のPHPの上書きは余りお勧めしません。Apple純正のセキュリティアップデートを掛けた際に、PHPがセキュリティアップデート同梱の古いVerで上書きされてしまう場合があります。。。 -下記のコマンドを順番に入力(10.5でPHP5.3.2をインストールする場合) $ tar xvfz php-5.3.2.tar.gz $ cd php-5.3.2 $ sudo ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-ldap=/usr --with-kerberos=/usr --enable-cli --with-zlib-dir=/usr --enable-exif --enable-ftp --enable-mbstring --enable-mbregex --enable-sockets $ make $ make install ## 最適な./configureの設定がなかなか見つからないので、お勧めのものがあれば記入お願いします。 -Apache2を別途インストールした場合には --with-apxs2=/usr/local/apache2/bin/apxs 等、Apache2のインストールパスの指定に注意。 -./configureオプションは./configure --helpを参考にお好みで適宜変更しましょう。特に10.4以前の系統でApache2を新規導入して標準のApache1.xをやめた場合には、参考URLの/configureオプションに書かれている「--with-apxs」を「--with-apxs2」に変更する事を忘れずに。 10−2.Entropy PHPの設定を元にビルドしてみる。 -Entropy PHPの最新版バイナリは5.3.0。このPHP環境を入れた状態でphpinfoを覗くと、下記の様な./configureでビルドされている事が分かります。 $ ./configure --disable-dependency-tracking --prefix=/usr/local/php5 --with-apxs2=/usr/sbin/apxs --with-config-file-scan-dir=/usr/local/php5/php.d --with-openssl=/usr --with-zlib=/usr --with-zlib-dir=/usr --with-gd --with-ldap --with-xmlrpc --enable-exif --enable-soap --enable-sqlite-utf8 --enable-wddx --enable-ftp --enable-sockets --with-bz2=/usr --enable-zip --enable-pcntl --enable-shmop --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-memory-limit --enable-mbstring --enable-bcmath --enable-calendar --with-iodbc --with-mhash --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv=/usr/local/php5 --with-mssql=shared,/usr/local/php5 --enable-memcache --with-imap=../imap-2007e --with-kerberos=/usr --with-imap-ssl=/usr --with-libxml-dir=shared,/usr/local/php5 --with-xsl=shared,/usr/local/php5 --with-gettext=/usr/local/php5 --with-curl=shared,/usr/local/php5 --with-png-dir=/usr/local/php5 --with-jpeg-dir=/usr/local/php5 --enable-gd-native-ttf --with-freetype-dir=/usr/local/php5 --with-pgsql=shared,/usr/local/php5 --with-pdo-pgsql=shared,/usr/local/php5 --with-mcrypt=shared,/usr/local/php5 -Entropy PHPはインストールするだけで最新版のP2がとりあえず動作します。P2の動作に必要ない項目もかなりありますが、この./configureを参考にソースのビルドをすれば、ひとまずは最新版PHPを追いかける事が出来ます。 -但し、デフォルトの環境だと基本的に./configureやmakeでエラーが出まくると思います。~ http://blogs.yahoo.co.jp/please_switch_on/6382426.html~ 原則としてはエラーが出たら↑の様な対症療法で一つ一つ解決するしかありません。 -一番多いのがgettextのエラーかと思います。~ http://www.bluemooninc.biz/~xoops/modules/pukiwiki/?PHP%A4%CE%C0%DF%C4%EA~ ここを参考にgettextをインストールし、./configureの「--with-gettext=」のパスを再指定。~ 但し、最新のPHP5.3.2にはgettextの相性問題があり、gettextがVer0.18以上だとmakeで次の様なエラーが出てこけます。~ $ Undefined symbols: $ "_zif_setlocale", referenced from: $ _basic_functions in basic_functions.o http://www.kadoppe.net/archives/2010/06/macports-snow-leopard-php-5-2-13-error.html~ 詳しくは↑参照。これを防ぐ為に、gettextのソースのVerは0.17以前を指定してビルドする事。 -次にエラーが出やすいのはimap。~ ソースをビルドしてもいいのですが、P2には必要ないので./configureから「 --with-imap=../imap-2007e --with-imap-ssl=/usr」を削除して対処。 -mcryptのビルドも忘れずに。~ http://www.momo-i.org/chapter9/php.html~ ここを参考にmhashとmcryptとlibmcryptをインストールし、「--with-mcrypt=shared,」のパスを再指定。~ -sql関係、特にmssqlやpgsqlもエラーが出やすいですが、ぶっちゃけsqliteだけあればいいので、両方とも./configureから外します。mssqlは「--with-mssql=shared,/usr/local/php5」、pgsqlは「--with-pgsql=shared,/usr/local/php5 --with-pdo-pgsql=shared,/usr/local/php5」を削除。 -この位までビルドや修正を行えばmake installまで無事に済むと思います。先に「/usr/local/php5」フォルダにインストールしてあるentropyPHPの上書きを防ぐ為に、フォルダ名を「/usr/local/php53」に変更し、apxs2のフォルダも変更して上書きを防ぐようにしています。~ $ ./configure --disable-dependency-tracking --prefix=/usr/local/php53 --with-apxs2=/usr/local/apache2/bin/apxs -この位までビルドや修正を行えばmake installまで無事に済むと思います。先に「/usr/local/php5」フォルダにインストールしてあるentropyPHPの上書きを防ぐ為に、フォルダ名を「/usr/local/php53」に変更しています。~ $ ./configure --disable-dependency-tracking --prefix=/usr/local/php53 --with-apxs2=/usr/sbin/apxs --with-config-file-scan-dir=/usr/local/php53/php.d --with-openssl=/usr --with-zlib=/usr--with-zlib-dir=/usr --with-gd --with-ldap --with-xmlrpc --enable-exif --enable-soap --enable-sqlite-utf8 --enable-wddx --enable-ftp --enable-sockets --with-bz2=/usr --enable-zip --enable-pcntl --enable-shmop --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-memory-limit --enable-mbstring --enable-bcmath --enable-calendar --with-iodbc --with-mhash --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv=/usr/local/php53 --enable-memcache --with-kerberos=/usr --with-libxml-dir=shared,/usr/local/php53 --with-xsl=shared,/usr/local/php53 --with-gettext=/usr/local --with-curl=shared,/usr/local/php53 --with-png-dir=/usr/local/php53 --with-jpeg-dir=/usr/local/php53 --enable-gd-native-ttf --with-freetype-dir=/usr/local/php53 --with-mcrypt=shared,/usr/local 11.PHP.iniを編集するには~ 「test_first.php」を利用して、現在のPHPが使っているPHP.iniの情報を知る事が出来ます。「Configuration File (php.ini) Path」セクションに書かれているフォルダにPHP.iniが入っています。~ そうして把握した後にFinderの「移動→フォルダへ移動」メニューを使って、不可視フォルダ内のPHP.iniを探します。~ ただし、デフォルトで「Loaded Configuration File」が「(none)」になっている場合には、PHP.iniが最初から存在しないまま動いているので、インストールしたフォルダ辺りから「php.ini-dist」なり「php.ini-recommended」なりをリネームして移動しましょう。 標準のPHPのPHP.iniを編集する場合には、「/private/etc/」内のPHP.iniを編集。~ 新たにインストールしたApache2の場合には「/usr/local/lib/」内のPHP.iniを編集します。~ OS XのバージョンによってはPHP.iniが書き込みロックされていたり、ユーザーにフォルダの編集権限が無かったりするので、httpd.confと同様に対処する事。 -基本的な設定内容は[[Windows版Apacheとcurlのインストール(●もOK)Apache2.xx.xx+PHP5(簡易版)]]を参照 12.rep2の設定tips~ rep2自体は「test_first.php」と同様にApacheのhtdocsフォルダに投入して、パーミッションを変更しておけばOKなのですが、UNIX系固有の制限のようなモノがいくつかあるので覚え書き程度に。~ まず、そのままの状態ではDatデータ保存フォルダも、IC2キャッシュフォルダもrep2フォルダ内部にしか置く事が出来ません。どうしてもNTFSの外部HDDやNAS等にデータフォルダを置きたい場合には、ちょっとしたコツを知っておく必要があります。~ -外部HDD等のパス~ Windowsの場合には「conf_admin.inc.php」などの記述は「E:\」など、ドライブ番号で記述すれば桶なのですが、OS Xの場合には「/volumes」で始まるフォルダのパスを記述する必要があります。~ 「/volumes」は不可視フォルダ扱いなので、目的の外部ドライブのフォルダはFinderのフォルダ移動機能で「/volumes」フォルダ以下を直接覗いて確かめましょう。もっと単純にターミナルに目的の外部ドライブのフォルダをドラッグ&ドロップしてbashさんに無理矢理パスを訳して貰う方法もありますけどね。~ -htdocsのエイリアス設定~ Datデータ保存フォルダは上記のフルパス文法だけ知っておけば桶なのですが、IC2を使う場合にはこれだけではダメです。~ Windowsの様にhtdocsの外のフォルダにホイホイ簡単にアクセスしてくれない(それ自体は良い事だけど)ので、「conf_ic2.inc.php」にフルパスでIC2キャッシュフォルダを記述した位では、ほぼ100%DB作成でコケる筈。。。~ Windows側のrep2でIC2キャッシュフォルダを一旦作成しておいて、そのフォルダをコピーして利用するという方法もあるのですが、htdocsの外にフォルダを置いた場合にはdbの作成・更新や画像のキャッシュは行われていても、ブラウザからhtdocsの外のフォルダにアクセスできないので画像の表示だけがいつまで経っても行えないというマヌケな状態になってしまいます。。。~ 例えば、IC2によって「/Volumes/xxx/rep2/DATA/cache/6464/00001/xxx.jpg」として作成されたキャッシュ画像で、Finderからのドラッグ&ドロップでブラウザ上では「file://localhost/Volumes/xxx/rep2/DATA/cache/6464/00001/xxx.jpg」として表示される場合、エイリアスを何も設定していないと「ImageCache2::Viewer」でキャッシュ画像を覗いた時に画像が全て空枠となってしまい、画像のある場所をクリックしてもhttpdはhtdocs以外の「http://127.0.0.1/Volumes」以下のファイルにはアクセスできないので404になってしまうといった具合に。~ これを防ぐにはhttpd.confにhtdocsのエイリアスを設定する必要があります。~ 参考URL:http://www.adminweb.jp/apache/docroot/index3.html~ 例として、「/Volumes/xxx/rep2/DATA/cache」という場所にIC2キャッシュフォルダを置いて、「http://127.0.0.1/」からアクセスさせたい場合にはhttpd.confの「<IfModule alias_module>」セクションに下記のように記述します。~ Alias /Volumes/xxx/rep2/DATA/cache "/Volumes/xxx/rep2/DATA/cache" <Directory "/Volumes/xxx/rep2/DATA/cache"> Allow from all </Directory> 記述した後にapachectlでApacheを再起動後、ImageCache2::Viewerを再度開いた時に画像の空枠だった場所に、サムネイル画像が正常に表示されれば成功です。