2010年10月3日日曜日

SnowLeopard + PHP5.3でのMySQLリモート接続

MacPortでインストールしたPHP5.3では、


mysqlnd(php5.3のmysql native client)が適用される。

しかし、CentOSなどのyumでインストールできるMySQLサーバーとの相性がよろしくない。

PHP Warning:  mysql_connect(): mysqlnd cannot connect to MySQL 4.1+ using old authentication

というエラーが現れ、接続することができません。

mysqlndを利用しないよう再コンパイルが必要となる。

2010/07/30 追記

portのvariants指定によりインストールを選べました。

sudo port install php5-mysql +mysql5

ただ、portのPHPを自分で再コンパイルしたい時もあると思うので、

以下記述は残します。

php -iで出てくるport版のcomplileオプションを参照し、

php5.3.2を再コンパイルした。

この際、MySQLのライブラリ指定で癖があったのでメモ。


--with-mysql=/opt/local/include/mysql5/mysql

で試してみたのだが、ライブラリ類とヘッダーの相対パスがずれているため、

必要なファイルが見つからないと申している。


> cd /tmp
> mkdir php5mysql5
> ln -s /opt/local/lib/mysql5 php5mysql5/lib
> ln -s /opt/local/include/mysql5 php5mysql5/include
>
> Then use --with-mysql=/tmp/php5mysql5 in your php configure line
> instead. Then delete /tmp/php5mysql5 when you're done.


上記のように、tmpにライブラリ類のシンボリックリンクを作成し、コンパイルをおこなうことで成功。

mysqlndめんどい。

 



0 件のコメント:

コメントを投稿