Skip to content

Latest commit

 

History

History
698 lines (522 loc) · 20.9 KB

setup_osx.wiki

File metadata and controls

698 lines (522 loc) · 20.9 KB

  1. summary PHP5環境構築(OSX macports) 
  2. labels Install

Table of Contents

導入

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 

OSX標準 VS Macports PHP環境

  OSX10.5標準のPHP環境と比較。

メリット:

  * 画像ライブラリなど外部機能拡張のインストールにパッケージが使える
  * PEAR環境が標準的にある
  * PHPのコンパイルオプションが変更できる。

デメリット:

  * インストールに手間と時間がかかる
  * インストール時にエラー発生の可能性がパッケージより高い。

詳細

Xcodeのインストール

macportsを利用するためにはOSX純正開発環境Xcodeが必要。http://developer.apple.com/technology/xcode.html から最新版Xcodeをダウンロード(要登録)して標準インストール。OSX付属のものよりバージョンが新しい。

macportsインストール

macportsはバイナリまたはソースでインストールできる。

バイナリインストール

http://www.macports.org/install.phpからダウンロードインストール

ソースインストール

ホームの/local/srcに展開してコンパイル、インストールの例

portコマンドでパスが通ってなければパスを通す

新規ターミナルで下記が実行できるなら問題なし

パスが通ってないなら~/.bash_profileを編集

ターミナルを新規に開いてport helpを試す

macports更新

PHP5+Mysql+画像ライブラリのインストール

  • MySQL5.1の場合
  • MySQL5.0の場合
ライブラリ(GD、iMagick, Cairo, キャッシュ、YAML)とphpのインストール

php拡張のインストール

でインストール可能な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)

configureオプションを変更

例)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を編集。既存のものを消去して下記のものに置き換える。

/etc/hostsファイル編集

<プロジェクト>を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/以下のファイルで設定する。

php.iniをweb用とCLI用と2種類用意

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を抑制する場合は

MYSQL設定

初期化

]再起動]

パスワード設定

実行してみる

my.cnfの作成と設定

デフォルトキャラクタの設定­をmy.confに追記。console.appでログが確認しやすいように/var/log/opt/にクエリーログを保存設定

/etc/my.cnf

※dataディレクトリを変更したい場合なら以下も[mysqld]に追記。書き込み権限も要設定。設定しないと/opt/以下の標準パスにDBデータが保存される。

MySQL再起動

ソケットファイルのパスの設定

mysqlのsocketファイルのパスを確認

opt/local/etc/php5/php.ini(または/opt/local/etc/php.ini )を編集

確認

DB文字コード

となればOK

PHPからのlocalhostソケット接続

 パスワード設定している場合は&quot;&quot;を&quot;password&quot;に変更

これでエラーが出なければ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がインストールされてない

Webアプリ管理画面

apc, memcaheの管理画面を用意

memcaheの管理画面でID/passとmemcacheサーバーをlocalhostに設定

  /var/www/localhost/htdocs/memcache.php

mysqlのクエリーログをwebから見られるように権限変更

PEARのフロント画面

PEAR_Frontend_WebをインストールしてPEARのフロント画面を用意。

確認

  • トラブルシュート*
というエラーが出たらwebから書き込めるディレクトリを用意してpear.confを指定。

pear config-createで作成するとpearが最後に自動的にきて面倒なので、存在しないconfを指定して一度目のアクセスで作ってもらいます。リロードすると正しく表示される。

などとする。また

とアンコメントすると認証をかけてない警告を抑制できる。

webでインストールするためのパーミッション設定。

linuxとパスを揃える

ライブサーバーでの運用を考えPEARのパスを揃えりためシンボリックリンクを張ります。

上記がUbuntu/Debian系下記がRedHat系です。どちらも張っといていいと思います。

付録

PHP_CodeSnifferを使う場合

PHPのコードチェックをする[PHP_CodeSniffer]はコードの整形のチェックだけでなくZendCodeAnalyzerを使うと潜在的なバグの可能性まで指摘までしてくれる(未使用変数の放置、届かないコードなど)。

  &#42; &lt;a href&#61;&quot;http&#58;//pear.php.net/manual/ja/package.php.php&#45;codesniffer.php&quot; target&#61;&quot;_blank&quot;&gt;PHP_CodeSniffer&lt;/a&gt;
  &#42; &lt;a href&#61;&quot;http&#58;//miau.s9.xrea.com/blog/index.php?itemid&#61;914&quot; target&#61;&quot;_blank&quot;&gt;miau&#39;s blog? PHP_CodeSniffer の &#45;&#45;standard オプション比較&lt;/a&gt;
  &#42; &lt;a href&#61;&quot;http&#58;//homepage3.nifty.com/renoiv/php/phpcs/eclipse.html&quot; target&#61;&quot;_blank&quot;&gt;Eclipseから実行&lt;/a&gt;

Eclipse - PDTインストール

PDT 日本語化パック

PDTをダウンロード展開して、日本語化パックファイルを該当フォルダ(plugins, features)にコピーして起動。

SVN

subversiveを参照。

eclipse > ヘルプ > Install New Software > AddでSVN用更新サイトを追加

 &#42; Name &#58; subversive
 &#42; URL&#58; http&#58;//download.eclipse.org/technology/subversive/0.7/update&#45;site/

Eclipse設定

割当メモリを増やす

※1G以上はうまくいかないみたい

設定をかえたら初期化してクリーンスタート

Graphviz

macportsになく、公式サイトのパッケージで

http://www.graphviz.org/Download_macos.php

Eclipse

Eclipse + PDTのセットアップは Eclipseセットアップ

PDTでdebugするために

iniファイルはディレクトリに入ったので読んでくれないのでphp.iniにエクステンションをまとめて記述。

 /opt/local/var/db/php5/内のファイルの読み込みをコメントにします。

Zend Debugger

Zend Studioを使う場合は以下のZendDebuggerをインストールします。XDebugとの共存はできません。

http://downloads.zend.com/pdt/server-debugger/ からダウンロードしてコピー、デバックするプロジェクトのhtdocsにdummy.phpが必要なのでこれもコピー

メンテナンス

更新されたパッケージを新しくし、古いバージョンや使われなくなったパッケージを削除する為に以下を時々実行します。

Note:

  パッケージが多いとアップグレードにかなりの時間がかかります。