Ubuntu18でphp4を動かす
問題
php4が動く環境を作りたいです。
答え
とある事例。
コンパイルオプションが多いとまた事情が変わってくるかもしれない。
/usr/local/src/php-4.4.9 など適当な場所にphp4.4.9のソースをダウンロードして展開。
configureオプションはこんな感じ。prefixをつける。CGI版としてコンパイルする(Apacheのモジュール版にはしない)。
'./configure' '--prefix=/usr/local/php-4.4.9' '--enable-mbstring' '--with-zlib' '--enable-zip' '--with-mysql' '--enable-fastcgi'
make して、make install でインストールできた。
ApacheでCGIとして使う設定
httpd.conf の ScriptAlias に指定する場所に実行ファイルを置いておく。
# cp /usr/local/php-4.4.9/bin/php /usr/lib/cgi-bin/php4-cgi
VirtualHost などの中に拡張子phpの時CGIとして実行する設定を入れる。
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ Action php4-cgi /cgi-bin/php4-cgi <FilesMatch \.php$> SetHandler php4-cgi </FilesMatch>
問題点
なお、内蔵しているMySQLクライアントが古くて version 3.23.49。長いパスワードに対応していないので、MySQL5.7などに接続するときに対応していないといわれてエラーになる。
改善(MySQLクライアントバージョンを上げる)
–with-mysql をいじれば変わるのではないかということで、configureオプションを変更。
'./configure' '--prefix=/usr/local/php-4.4.9' '--enable-mbstring' '--with-zlib' '--enable-zip' '--with-mysql=/usr' '--enable-fastcgi'
ヘッダファイルは /usr/include にあるのでOK。
ライブラリが /usr/lib になく、/usr/lib/x86_64-linux-gnu にあるためか、以下のエラーになるので、
configure: error: Cannot find libmysqlclient library under /usr
ライブラリへのリンクを /usr/lib 直下に作る。
# ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient.so /usr/lib/libmysqlclient.so
この状態で、configure、make、make install すると、mysql の Client API version が 5.7.33 になり、長いパスワードのMySQLにも接続できるようになった。
コメント