レンタルサーバー各社のPerl、Ruby、Pythonのパス一覧
更新:
さくらのレンタルサーバ、ロリポップ!、エックスサーバー、バリューサーバーにおけるPerl、Ruby、Pythonのパスの一覧。
Perl、Ruby、Pythonのパス一覧
CGIプログラムを実行する場合、ファイルの先頭(1行目)にインタプリタを指定する。
例えば Perl の場合は以下のように書く。
#!/usr/bin/perl
この表記は
シバン
と呼ばれ、各インタプリタへのパスを指定する。
パスはレンタルサーバーによって異なる場合があるので、以下の主要なレンタルサーバーについてパスを調べた。
下表は2017年6月26日現在のもので、詳しくは
さくらのレンタルサーバCGI・PHP・SSI について、
ロリポップ! CGI・SSI・PHP・SENDMAILについて、
エックスサーバー プログラム言語、
バリューサーバー 料金・プラン
に書かれている。
|
PHP |
Perl |
Ruby |
Python |
さくらのレンタルサーバ |
/usr/local/bin/php |
/usr/bin/perl |
/usr/local/bin/ruby |
/usr/local/bin/python |
ロリポップ! |
不明 |
/usr/bin/perl または /usr/local/bin/perl |
/usr/local/bin/ruby1.9 や /usr/local/bin/ruby2.0 |
/usr/local/bin/python2.7 や /usr/local/bin/python3.4 |
エックスサーバー sv1999まで |
/usr/bin/php7.1 など |
/usr/bin/perl または /usr/local/bin/perl |
/usr/bin/ruby1.9.3 や /usr/bin/ruby2.0.0 |
/usr/bin/python2.7 や /usr/bin/python3.3 |
エックスサーバー sv2001以降 |
/usr/bin/php7.1 など |
/usr/bin/perl |
/usr/bin/ruby |
/usr/bin/python3.4 など |
バリューサーバー |
/usr/local/bin/php71 など |
/usr/bin/perl または /usr/local/bin/perl |
/usr/local/bin/ruby |
/usr/local/bin/python |
複数のバージョンを選択できる場合は、バージョンによりパスが異なる。
さくらのレンタルサーバは公式には書かれていないが、Perl は #!/usr/local/bin/perl でも動作した。
Internal Server Error が表示されてCGIプログラムが動かない
パスを正しく指定しても Internal Server Error が表示される場合、CGIプログラムファイルの改行コードが CRLF(\r\n)になっている場合がある。
その場合は改行コードを LF(\n)に変更する。
テキストエディタによっては一括で改行コードを変換できるものがある。
サクラエディタでは名前を付けて保存する際、保存時のウィンドウの下方に「改行コード」があり、CRLF や LF を選択できる。
env 表記
パスは以下のような表記が出来る場合がある。
#!/usr/bin/env perl
このように書くことでサーバーによってパスが異なっていてもパスを書き換えなくて済む。
ただし、これで動作するかはサーバーによる。
さくらのレンタルサーバで試したところ、Perl、Ruby、Python についてCGIプログラムが動作するのを確認した。
Perl
#!/usr/bin/env perl
Ruby
#!/usr/bin/env ruby
Python
#!/usr/bin/env python
ただ、複数のバージョンがインストールされている場合、どのバージョンが実行されるか分からないので注意が必要となる。
バージョンはプログラムで確認すれば良いが、サーバー管理者により適用されるバージョンが変わる可能性があるので注意。