- summary PHP5環境構築(OSX macports)
- labels Install
OSXにApache2/PHP5の開発環境をmacportsでセットアップする一例です。 apacheの再起動なしでバーチャルドメインのサイトの設定を実現します。 純正でのセットアップはこちら、[setup_osx_php]で
* OSX標準環境は使わずにMacportsでセットアップ * PHPの機能拡張(iMagickやCairo等グラフィックライブラリ、memcahceキャッシュ,spycYAMLパーサー)、および各サービスのインストール * バーチャンルホストを使用してhostファイルのみの変更で各プロジェクトに個別にルート(/)からアクセスできる。 * MySQLはUTF-8で構築 * webフォルダのパスは/var/www/<プロジェクト>/htdocs localhostは/var/www/localhost/htdocs/ * キャッシュやPEARのパッケージがwebから管理できる。 * バージョンはPHP5.3, MySQL5.0,Apache2.2
OSX10.5標準のPHP環境と比較。
メリット:
* 画像ライブラリなど外部機能拡張のインストールにパッケージが使える * PEAR環境が標準的にある * PHPのコンパイルオプションが変更できる。
デメリット:
* インストールに手間と時間がかかる * インストール時にエラー発生の可能性がパッケージより高い。
macportsを利用するためにはOSX純正開発環境Xcodeが必要。http://developer.apple.com/technology/xcode.html から最新版Xcodeをダウンロード(要登録)して標準インストール。OSX付属のものよりバージョンが新しい。
macportsはバイナリまたはソースでインストールできる。
http://www.macports.org/install.phpからダウンロードインストール
ホームの/local/srcに展開してコンパイル、インストールの例
新規ターミナルで下記が実行できるなら問題なし
パスが通ってないなら~/.bash_profileを編集
ターミナルを新規に開いてport helpを試す
- MySQL5.1の場合
- MySQL5.0の場合
でインストール可能なPHP5拡張パッケージを確認
拡張インストール例
デバッガー
-wで起動時もロードされる
起動にエラーがあっても表示されないことがあるので注意
* php5/ImageMagickはで必要な拡張をvariantsで把握して指定します。 例 $ port variants php5 * コンパイルオプションを変更したいときはeditで編集します。 例$port edit php5 " 以前mysqlのvariantsだったserverは独立したパッケージになりました。PHPの拡張もpeclよりphp5-*パッケージの方が安定しています
コンパイルでエラーが出る場合がある。エラーの原因により対処法は違うが以下の対処で解決する場合がある。
* cleanコマンドを使ってみる 例)$sudo port clean php5 * ソースインストールで問題があるならdmg版で再インストールしてみる ※1 * variantns(+ipcなど)を減らしてみる * sudo port edit php5などとしてconfigureを変更してみる * ソースのチェックサムエラーが出ることがある。
この場合はネットからphp-5.3.0.tar.bz2を探してソースを置き換える。 ソースディレクトリはSpotlightで検索。php5は(/opt/local/var/macports/distfiles/php5)
例)php5に -enable-memory-limitをつける。※実際はこのオプションは5.2.1から常にonになっているで不要
myvar variantとして以下を追記
上記でつくったものは+myvarバリアントでインストールできる。
http://localhost/ でIt worksが出るのを確認。 アンコメントして以下の行を有効化。httpd-vhosts.confはmy−httpd-vhosts.confにする。mod_php.confも追加。
※バックアップをとって、オリジナルを編集しないでオリジナルをバックアップにしてmyとかつけたファイル名を使用しているのはmacportでupdateしたときにファイルが上書きして消されないため(以前updateで全部消えた)
/opt/local/apache2/conf/httpd.confを編集し下記を検索してアンコメント。
phpの読み込みをファイルの最後など適当な場所に追記。
/opt/local/apache2/conf/extra/my-httpd-vhosts.confを編集。既存のものを消去して下記のものに置き換える。
<プロジェクト>をlocalhostに向ける為にhostsファイルを編集する.
例) <プロジェクト>がapp.sample1 -4 の4つのプロジェクトの場合
※スペース区切りで追加 ※hostsファイルの変更後にapacheリスタート等は不要
/var/www/<プロジェクト>/htdocs/index.htmlがhttp://<プロジェクト>/index.htmlでアクセスできる。 できなければ ping app.sample1等として127.0.0.1を向いているか確認。
Apacheスタート
extentionのインストール。cairoが不要ならここはスキップ
トラブルシューティング
imagickでMagickWand-configがないとエラーが出たらシンボリックリンクを張り再度 pecl install imagick
php.iniを編集
/opt/local/etc/php.ini
apcを開発のため一時的に外す。(パースエラーで"真っ白"がある場合がある) パーケージでいれたエクステンションは/opt/local/var/db/以下のファイルで設定する。
web(mod_php)用php.ini
CLI用php.ini
{{{
$ sudo cp /etc/php.ini.default /opt/local/etc/php-cli.ini }}}
以下のタイムゾーンを設定
以下を追記
PEAR使用など完全にPHP5専用に以降してない場合などエラーの出力レベル感度を下げる場合 [ を [ に変更。 PHP5.3でE_DEPRECATEDを抑制する場合は
初期化デフォルトキャラクタの設定をmy.confに追記。console.appでログが確認しやすいように/var/log/opt/にクエリーログを保存設定
/etc/my.cnf
※dataディレクトリを変更したい場合なら以下も[mysqld]に追記。書き込み権限も要設定。設定しないと/opt/以下の標準パスにDBデータが保存される。
mysqlのsocketファイルのパスを確認
opt/local/etc/php5/php.ini(または/opt/local/etc/php.ini )を編集
DB文字コード
となればOK
パスワード設定している場合は""を"password"に変更
これでエラーが出なければOK
. ERROR! Manager of pid-file quit without updating file.というエラーがコンソールに出てmysqlがスタートできない事があるが原因がコンソールに表示されない。
エラー内容をtailする
例えば
これはmysqlテーブルが読めない(ない)場合のエラー
これで対処
my.cnfに誤りがあり指定しているディレクトリやファイルをがない場合にエラーが出る事がある。パスをチェック。 またはmysqlのプロセスが残ってるときがある。psでみつけてkillで削除
どうしてもうまくいかない場合はuninstall, installをやり直してみる。
/opt/local/var/run/mysql5/mysqld.sockのエラーの場合
ソケットファイル作成で対処。
このエラーだとphp5-mysqlがインストールされてない
memcaheの管理画面でID/passとmemcacheサーバーをlocalhostに設定
/var/www/localhost/htdocs/memcache.php
mysqlのクエリーログをwebから見られるように権限変更
PEAR_Frontend_WebをインストールしてPEARのフロント画面を用意。
確認
- トラブルシュート*
pear config-createで作成するとpearが最後に自動的にきて面倒なので、存在しないconfを指定して一度目のアクセスで作ってもらいます。リロードすると正しく表示される。
などとする。また
とアンコメントすると認証をかけてない警告を抑制できる。
webでインストールするためのパーミッション設定。
ライブサーバーでの運用を考えPEARのパスを揃えりためシンボリックリンクを張ります。
上記がUbuntu/Debian系下記がRedHat系です。どちらも張っといていいと思います。
PHPのコードチェックをする[PHP_CodeSniffer]はコードの整形のチェックだけでなくZendCodeAnalyzerを使うと潜在的なバグの可能性まで指摘までしてくれる(未使用変数の放置、届かないコードなど)。
* <a href="http://pear.php.net/manual/ja/package.php.php-codesniffer.php" target="_blank">PHP_CodeSniffer</a> * <a href="http://miau.s9.xrea.com/blog/index.php?itemid=914" target="_blank">miau's blog? PHP_CodeSniffer の --standard オプション比較</a> * <a href="http://homepage3.nifty.com/renoiv/php/phpcs/eclipse.html" target="_blank">Eclipseから実行</a>
PDTをダウンロード展開して、日本語化パックファイルを該当フォルダ(plugins, features)にコピーして起動。
subversiveを参照。
eclipse > ヘルプ > Install New Software > AddでSVN用更新サイトを追加
* Name : subversive * URL: http://download.eclipse.org/technology/subversive/0.7/update-site/
割当メモリを増やす
※1G以上はうまくいかないみたい
設定をかえたら初期化してクリーンスタート
macportsになく、公式サイトのパッケージで
http://www.graphviz.org/Download_macos.php
Eclipse + PDTのセットアップは Eclipseセットアップで
iniファイルはディレクトリに入ったので読んでくれないのでphp.iniにエクステンションをまとめて記述。
/opt/local/var/db/php5/内のファイルの読み込みをコメントにします。
Zend Studioを使う場合は以下のZendDebuggerをインストールします。XDebugとの共存はできません。
http://downloads.zend.com/pdt/server-debugger/ からダウンロードしてコピー、デバックするプロジェクトのhtdocsにdummy.phpが必要なのでこれもコピー
更新されたパッケージを新しくし、古いバージョンや使われなくなったパッケージを削除する為に以下を時々実行します。
Note:
パッケージが多いとアップグレードにかなりの時間がかかります。