[php]homebrewでintlライブラリが有効なphpをコンパイルする

Posted under php by uechoco on 日曜日 4 12月 2011 at 14 : 42 : 24

Symfony2などを使用する場合、php 5.3のintlという国際化用拡張モジュールがインストールされていないと警告が出たり一部の機能が使用することができません。

私のMacBook Airに標準で入っているphpは5.3.6ですが、intlライブラリは含まれていません。

そこで、今回はMac OSX 10.7 Lionのhomebrewでintlライブラリが有効なphpをコンパイルし、加えてSymfony2のcheck.phpと呼ばれる環境チェックスクリプトで警告が出ないようにしてみます。私のphpは標準のものに対してライブラリを加えているため、皆さんよりも追加でインストールする項目が少ないかもしれません。

intlオプションが有効なphp formula

phpは標準でインストールされているため、homebrewのformulaは有りません。そこで、非公式に作られているformulaを使用します。
ココらへんの手順はいくつかの記事を参考にしました。

Bash:
  1. brew install https://github.com/adamv/homebrew-alt/raw/master/duplicates/php.rb --with-mysql --with-intl

このとき、使用可能なオプションはoptionsコマンドで見ることができます。

TEXT:
  1. brew options https://github.com/adamv/homebrew-alt/raw/master/duplicates/php.rb
  2. php
  3. --with-mysql
  4.     Include MySQL support
  5. --with-mariadb
  6.     Include MariaDB support
  7. --with-pgsql
  8.     Include PostgreSQL support
  9. --with-mssql
  10.     Include MSSQL-DB support
  11. --with-fpm
  12.     Enable building of the fpm SAPI executable (implies --without-apache)
  13. --without-apache
  14.     Build without shared Apache 2.0 Handler module
  15. --with-intl
  16.     Include internationalization support
  17. --without-readline
  18.     Build without readline support
  19. --with-gmp
  20.     Include GMP support

依存関係のあるlibxml2, mcrypt, icu4cなどもコンパイルされたあと、php本体もコンパイルされます。少し時間がかかるので、気長に待ちましょう.。

apacheの設定

phpのコンパイルが終了すると、以下のようなメッセージが出てきます。

TEXT:
  1. For 10.5 and Apache:
  2.     Apache needs to run in 32-bit mode. You can either force Apache to start
  3.     in 32-bit mode or you can thin the Apache executable.
  4.  
  5. To enable PHP in Apache add the following to httpd.conf and restart Apache:
  6.     LoadModule php5_module    /usr/local/Cellar/php/5.3.8/libexec/apache2/libphp5.so
  7.  
  8. The php.ini file can be found in:
  9.     /usr/local/etc/php.ini
  10.  
  11. 'Fix' the default PEAR permissions and config:
  12.     chmod -R ug+w /usr/local/Cellar/php/5.3.8/lib/php
  13.     pear config-set php_ini /usr/local/etc/php.ini

例えば、Webサーバーがapache であれば「LoadModule php5_module /usr/local/Cellar/php/5.3.8/libexec/apache2/libphp5.so」を/etc/apache2/httpd.confに追加しまししょう。(元々入っているのphp5_moduleの行があるので、そちらは先頭に「#」をつけてコメントアウトしておきましょう。)

また新しいphpのiniファイルは「/usr/local/etc/php.ini」にありますので標準の場所と異なるのを気をつけましょう。

PEARライブラリののパーミッションも直しておくと便利です。「chmod -R ug+w /usr/local/Cellar/php/5.3.8/lib/php」というコマンドはすぐに通るかも知れませんが、「pear config-set php_ini /usr/local/etc/php.ini」のときに「/User/hogehoge/.pearrc」が作れないといったエラーがあった場合は、touchコマンドなどで事前に作成してあげて、パーミッションを777にでもしておいてください。

この時点で「php --version」としても、まだ元々のphpコマンドの方を参照しているでしょう。「which php」とすると「/usr/bin/php」を参照しているためです。コマンドラインが読み込まれた段階でbrew側のコマンド群を優先的に読みこむようにしましょう。ここではシェルがbashの想定で設定ファイルを書きます。

Bash:
  1. vi ~/.bash_profile

としてこの1行を追加しましょう。

TEXT:
  1. export PATH="$(brew --prefix)/bin:$PATH"

最後に、bashの設定を反映させます。

Bash:
  1. source ~/.bash_profile

この時点でphp --versionすると、新しいほうのphpが参照されているでしょう。

TEXT:
  1. PHP 5.3.8 (cli) (built: Dec  4 2011 13:40:01)
  2. Copyright (c) 1997-2011 The PHP Group
  3. Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies

timezoneの設定

新しいphp.iniが作成されたので、最低限の設定としてtimezoneの設定をしておかないと、いずれ警告が出てしまいます。

Bash:
  1. vi /usr/local/etc/php.ini

diff形式でいうと、以下のように変更してください。

TEXT:
  1. -;date.timezone =
  2. +date.timezone = "Asia/Tokyo"

APCのインストール

この時点でintl込のphpが動くのですが、最後にSymfony2用にAPCライブラリもコンパイルして用意しましょう。

Bash:
  1. brew install apc

と打つだけです。

インストール後、以下のようなメッセージが表示されます。

TEXT:
  1. To finish installing APC:
  2.  * Add the following lines to php.ini:
  3.     [apc]
  4.     extension="/usr/local/Cellar/apc/3.1.9/apc.so"
  5.     apc.enabled=1
  6.     apc.shm_segments=1
  7.     apc.shm_size=64M
  8.     apc.ttl=7200
  9.     apc.user_ttl=7200
  10.     apc.num_files_hint=1024
  11.     apc.mmap_file_mask=/tmp/apc.XXXXXX
  12.     apc.enable_cli=1
  13.  * Restart your webserver
  14.  * Copy "/usr/local/Cellar/apc/3.1.9/apc.php" to any site to see APC's usage.

書いてあるとおりに、「/usr/local/etc/php.ini」にapcの設定を追加し、webサーバーを再起動します。最後のスクリプトのコピーは、APCの便利スクリプトなので、今はいりません。

Symfony2のapp/check.phpを見る

Symfony2のapp/check.phpを使って、環境が整っているかチェックしてみましょう。(その前にSymfony2の本体をDLしておいてください。)

Symfony2のルートディレクトリに移動し、以下のコマンドでapp/check.phpを実行します。

Bash:
  1. php app/check.php

TEXT:
  1. ********************************
  2. *                              *
  3. *  Symfony requirements check  *
  4. *                              *
  5. ********************************
  6.  
  7. php.ini used by PHP: /usr/local/etc/php.ini
  8.  
  9. ** WARNING **
  10. *  The PHP CLI can use a different php.ini file
  11. *  than the one used with your web server.
  12. *  If this is the case, please ALSO launch this
  13. *  utility from your web server.
  14. ** WARNING **
  15.  
  16. ** Mandatory requirements **
  17.  
  18.   OK        Checking that PHP version is at least 5.3.2 (5.3.8 installed)
  19.   OK        Checking that the "date.timezone" setting is set
  20.   OK        Checking that app/cache/ directory is writable
  21.   OK        Checking that the app/logs/ directory is writable
  22.   OK        Checking that the json_encode() is available
  23.   OK        Checking that the SQLite3 or PDO_SQLite extension is available
  24.   OK        Checking that the session_start() is available
  25.   OK        Checking that the ctype_alpha() is available
  26.   OK        Checking that the token_get_all() is available
  27.   OK        Checking that the APC version is at least 3.0.17
  28.  
  29. ** Optional checks **
  30.  
  31.   OK        Checking that the PHP-XML module is installed
  32.   OK        Checking that the token_get_all() function is available
  33.   OK        Checking that the mb_strlen() function is available
  34.   OK        Checking that the iconv() function is available
  35.   OK        Checking that the utf8_decode() is available
  36.   OK        Checking that the posix_isatty() is available
  37.   OK        Checking that the intl extension is available
  38.   OK        Checking that the intl ICU version is at least 4+
  39.   OK        Checking that a PHP accelerator is installed
  40.   OK        Checking that php.ini has short_open_tag set to off
  41.   OK        Checking that php.ini has magic_quotes_gpc set to off
  42.   OK        Checking that php.ini has register_globals set to off
  43.   OK        Checking that php.ini has session.auto_start set to off
  44.  
  45. ** Optional checks (Doctrine) **
  46.  
  47.   OK        Checking that PDO is installed
  48.   OK        Checking that PDO has some drivers installed: mysql, sqlite, sqlite2

基本的な警告はなくなりました。これでSymfony2を楽しむ環境が整いましたね!


[python]MacPortsで入れたPythonでeasy_install

Posted under python by uechoco on 土曜日 7 8月 2010 at 01 : 13 : 10

前回は[python]2.5、2.6、3.x系など、バージョンの違い : うえちょこ@ぼろぐにてSnowLeopard標準のPython 2.6ではなく、GAE用にMacPortsを利用してPython 2.5とpython_selectをインストールしました

さて、Pythonにはphpでいうpear/peclコマンド、perlでいうcpanコマンドに当たるようなeasy_installというコマンドがあるようです。PyPI(Python Package Index)というレポジトリから文字通り簡単にライブラリが追加できるコマンドのようです。このコマンドはsetuptoolsというパッケージ(なのかな?)に含まれています。あーありがち - Pyに触ってみたの途中にある比較表が分かりやすいです。

このeasy_installというコマンドもどうやらPythonのインストール環境に依存しているようです。つまりMacPortsで入れたPython専用にeasy_installコマンドがちゃんと用意されています。といってもこれもMacPortsでインストールする必要があります。たとえば、私がインストールしたPython 2.5用のeasy_installコマンドはpy25-setuptoolsというパッケージに含まれています。インストールは以下のような感じになります。

Bash:
  1. sudo port install py25-setuptools

インストールしたeasy_installコマンドのパスを確認しておきましょう。普通のeasy_installコマンドは、デフォルトではSnowLeopardに標準で入っているpython26-apple用のものです。

Bash:
  1. $ which easy_install
  2. /usr/bin/easy_install

MacPortsで入れたPythonのeasy_installコマンドは別のところにあります。

Bash:
  1. $ ls /opt/local/bin/easy_install-2.5
  2. /opt/local/bin/easy_install-2.5

本当にコマンドが違うものなのかどうか、以下のような実験をしてみました(Mac OS X 10.6.4)。

    • 「sudo python_select python25」でMacPortsでインストールしたPython 2.5に切り替え
    • 「sudo /opt/local/bin/easy_install-2.5 django」でDjangoライブラリをインストール
    • 「python」でインタプリタ起動
    • 「>>> import django」でdjangoモジュールを読み込んでもエラーはでない。
    • 「>>> quit()」でインタプリタ終了
    • 「sudo python_select python26-apple」でSnowLeopard標準のPython 2.6に切り替え
    • 「python」でインタプリタ起動
    • 「>>> import django」でdjangoモジュールを読み込むと、「ImportError: No module named django」で読み込めない。
    • 「>>> quit()」でインタプリタ終了
    • 「sudo python_select python25」でMacPortsでインストールしたPython 2.5に切り替え
    • 「sudo /opt/local/bin/easy_install-2.5 django」でDjangoライブラリをインストール
    • 「python」でインタプリタ起動
    • 「>>> import django」でdjangoモジュールを読み込んでもエラーはでない。
    • 「>>> quit()」でインタプリタ終了

ということで、インストールした環境に応じてeasy_installコマンドは違いますので注意しましょう。

参考:あーありがち - Pyに触ってみた


[Mac]Winで文字化けしない、パスワード付きも可能なzip圧縮「MacWinZipper」

Posted under mac入門記 by uechoco on 木曜日 29 7月 2010 at 00 : 06 : 06

Macを使っていると、Windowsユーザの方から「zipファイル解凍したらファイル名が文字化けしてるんだけど?」って言われたこと有りませんか?仕事の取引先などから言われてしまうとちょっと焦ってしまいますよね。MacではFinderの右クリックメニューから簡単に圧縮が可能なのですが、ファイル名に日本語が含まれているものを同様に圧縮してしまうと、Windowsで解凍したときに文字化けしてしまいます。(技術的な詳しい話をするならばGoogleで「UTF-8 MAC」と検索すると関連話題が出てくるかと思います。)

Windowsユーザに迷惑をかけずに、でも簡単に圧縮したい、そういう要望をかなえてくれるのがMacWinZipperというフリーソフトです。MacWinZipperはアップルのソフトウェアダウンロードサイトで、スタッフのお勧め印がついているソフトです。

使い方は簡単で、MacWinZipperのアイコンに、圧縮したいファイルをドラッグドロップするだけ。圧縮が完了するとGrowlで通知してくれる機能もあります。また、個人的にありがたかったのが、パスワード付きzipも簡単に作れるところです。

しかし、MacWinZipperのアイコンにドラッグドロップするよりもさらに簡単に圧縮する環境を作ることもできます。Autometerという様々な操作を自動化するツールで右クリックメニューから圧縮できるようにしてしまいます。

Automaterの設定方法はMacでウィンドーズ対応の圧縮ファイルを作る|IVYのおもちゃ箱を参考にしました。あんまり慣れていない人だと複雑かなって思うかもしれませんが、1度設定してしまえばずっと使えるので、とっても便利です。

是非お試しあれー

紹介記事:

Finderの右クリックメニューへの登録の仕方(Automater)


[Eclipse]インストール済みのJREが復活した

Posted under mac入門記 by uechoco on 日曜日 28 3月 2010 at 10 : 44 : 00

Mac OS X 10.6(Snow Leopard)にしたり、Eclipse 3.5(Galileo)にしたり、していると、いつの間にかOSDE(OpenSocial Environment Development)が起動できなくなってた。どうやら、JREやJDKが見つからないと言って、起動してくれないらしい。ちなみにEclipseはPDTベースにPleiadesで日本語化を施したもの

関連エラー:

  • 選択された JRE は現在の準拠レベル 1.4 をサポートしていません
  • 指定された JRE インストールが存在しません
  • The specified JRE installation does not exist
  • 標準 VM は MacOS ではサポートされていません。
  • Standard VM not supported on MacOS

たしかに、設定メニューからインストール済みのJREを見てみると、何も無い。そして、追加仕様としても、追加できない。OSDEやMac のJavaやらいろいろ疑ってググったが、中々出てこない。英語のサイトを見ていたら、新規ソフトウェアのインストールでいくつかインストールしたら改善したって書き込みを見たので、Eclipse Java 開発ツール」とか「環境記述 JavaSE-1.6」とか、それっぽいものを同時にインストールしてみたところ、インストール済みのJREが復活しました。たぶん前者が影響しているかと思います。

参考:


[mac]Mac版Officeを安全にアンインストールする

Posted under mac入門記 by uechoco on 日曜日 14 2月 2010 at 21 : 40 : 03

Mac版のOfficeは今まで知人のお古を借りていたのですが、先日発売されたOffice 2008 for Mac Business Edition アカデミックが欲しくなって買いましたので、以前のバージョンのアンインストールを決行しました。

でアンインストール方法なのですが、Mac版のOfficeには、Remove Office.appというアプリケーションが用意されており、そのアプリケーションでMac内のアンインストール可能なOffice製品を抽出し、選択してアンインストールができるようです。

そして、Microsoftにもアンインストールのドキュメントがあります。
Remove Office ツールを使用して Office 2008 for Mac を削除する方法


次ページへ »

Copyright © 2012 うえちょこ@ぼろぐ. WP Theme created by Web Top.