SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

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にも接続できるようになった。

関連するメモ

コメント