第6章:Web サイトの移行(HTML / CGI編)

← 目次に戻る

後任者への鉄則:
Ubuntu 24.04 (Apache 2.4) で古い CGI を動かす際、必ず以下の3つの「壁」を突破せよ。これを怠ると 500 Error から抜け出せない。

6.1 権限の壁:SuEXEC の厳格化

ディレクトリの権限が 775(グループ書き込み可)だと、SuEXEC は実行を拒否する。必ず 755 に絞れ。

find /var/www/clients/client*/web*/web/ -type d -exec chmod 755 {} +

6.2 言語の壁:Perl @INC 仕様変更

Perl 5.26 以降、カレントディレクトリ(.)が検索パスから除外された。外部ライブラリ(jcode.pl等)を読み込むには、スクリプトの2行目にパッチを当てる必要がある。

# 全CGIの2行目に "use lib '.';" を挿入せよ(詳細は root フォルダの patch スクリプト参照)

6.3 パスの壁:Perl シバンの不一致

#!/usr/local/bin/perl を救済するため、シンボリックリンクを常駐させよ。

sudo ln -s /usr/bin/perl /usr/local/bin/perl

6.4 仕上げ:Apache Directives

ドキュメントルート(/web)で CGI を許可する設定を管理画面から投入せよ。

DirectoryIndex index.shtml index.php index.html index.htm
<Directory {DOCROOT}>
    Options +ExecCGI +FollowSymLinks +Includes
    AddHandler cgi-script .cgi .pl
    Require all granted
</Directory>