以前作った Windows + PHP + mySQL のシステムが Linux 上で動かない問題。結局 PHP のソースを EUC にして,MySQLの文字コードも EUC にしたところ動くようになった。あとは本番環境で動くか,なのだが,そこは YN 氏にお願いするとして,ここではインストールメモだけ残しておく。
PHP + MySQL 環境を RedHat Linux に作成。PHP は既に入っているので MySQL だけ入れればいいかと思ったら php-mysql のバージョンが合わずにうまくいかなかったので apache,PHP,MySQLをソースからインストール。
apache(httpd-2.0.46.tar.gz)インストール
// make
./configure --enable-shared=max --enable-module=most
make
make install
// httpd.conf
DirectoryIndex に index.php を追加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
// 起動
/usr/local/apache2/bin/apachectl start
mysql(mysql-4.0.13.tar.gz)インストール
// make
./configure --with-charset=ujis --with-extra-charsets=all --with-mysqld-user=mysql --prefix=/usr/local/mysql
make
make install
// 設定
scripts/mysql_install_db
chown -R root /usr/local/mysql
chown -R mysql /usr/local/mysql/var
chgrp -R mysql /usr/local/mysql
cp support-files/my-medium.cnf /etc/my.cnf
// 起動
/usr/local/mysql/bin/safe_mysqld --user=mysql &
// データベース作成
mysqladmin -u root password (パスワード)
mysqladmin -u root -p create (データベース名)
mysql -u root -p mysql
grant all privileges on (データベース名).* to (ユーザ名)@localhost identified by '(パスワード)';
mysql -u (ユーザ名) -p (データベース名)
php(php-4.3.2.tar.gz)インストール
// make
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql
InnoDB: Error: log file .ib_logfile1 is of different size 0 0 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!
というエラー。これは何度もインストールしてファイルサイズの整合性が失われたせいで,
ib_logfile
ibdata
を削除して直った。
PHPからMySQL接続時に
/var/lib/mysql/mysql.sock
に接続できないというエラー。これは MySQL の設定と PHP の設定が合っていないため。今回は PHP 側の設定を直して,DB接続時のサーバを
localhost
から
localhost:/tmp/mysql.sock
にした。
php コマンドで直接 .php を起動すると
File 'NONEXISTENT/charsets/?.conf' not found (Errcode: 2)
Character set '#12' is not a compiled character set and is not specified in the 'NONEXISTENT/charsets/Index' file
というエラーが出てくるのだが,今のところ実行には影響していない模様。ujis.conf がない,という意味のようだが,未解決。