皆様おはようございます。
ご相談させていただきたいのですが、先日VPSを初めて契約し、CentOSでサーバーの学習を始めましたところ、rubyのCGIの利用でエラーが出てしまい、ブラウザで表示することができず、internal server errorが出てしまっています。試行錯誤してみたのですが、改善が見られず、皆様のお力をお借りしたいです。
以下がその詳細です。
test.cgi(パス:/var/www/cgi-bin/test.cgi)
Ruby
1#!/root/.rbenv/versions/2.4.1/bin/ruby 2require 'rbconfig' 3Ruby = File::join(RbConfig::CONFIG['bindir'], 4 RbConfig::CONFIG['ruby_install_name']) 5Ruby << RbConfig::CONFIG['EXEEXT'] 6 7puts Ruby 8 9print "Hello World!\n"
これを
ruby test.cgi
として実行すると、以下のようにコンソールに出力されます。
/root/.rbenv/versions/2.4.1/bin/ruby
Hello World!
ここで出力されたパスがrubyのインタプリタのパスです。
ここで
sudo -u apache -S /bin/bash -c /var/www/cgi-bin/test.cgi
を実行すると
/bin/bash: /var/www/cgi-bin/test.cgi: /root/.rbenv/versions/2.4.1/bin/ruby: 誤ったインタプリタです: 許可がありません
とエラーが出てしまいます。
ちなみにtest.cgiとその親ディレクトリのパーミッションは755に設定しており、VPSの提供元の推奨と一致しており、ファイルやディレクトリのパーミッションの問題では無さそうです。またソースコードの改行文字に関しては、nkfコマンドで修正したので、問題は無いはずです。
また、
printenv
を実行すると、
SHELL=/bin/bash
USER=root
PATH=/root/.rbenv/shims:/root/.rbenv/shims:/root/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/etc/sysconfig
LANG=ja_JP.utf8
RBENV_SHELL=bash
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
_=/bin/printenv
OLDPWD=/var/www/cgi-bin
と出力(一部省略)されました。
「誤ったインタプリタです」のエラーが解決への糸口だとは思うのですが、ここから先に進めずにいます。
解決方法や、原因として疑われる点等ありましたら、ご教授いただけないでしょうか?
また、cgi-binディレクトリのパーミッションは以下のようになっております。
ls -l
合計 4
drwxrwxr-x 2 apache username 88 2月 1 07:27 cgi-bin
drwxrwxr-x 4 apache username 4096 2月 1 07:27 html
cgi-binディレクトリ内のファイルのパーミッションは以下の通りです。
ls -l
合計 52
-rwxr-xr-x 1 root root 565 1月 31 22:21 index.css
-rwxr-xr-x 1 root root 36864 1月 31 22:08 report.db
-rwxr-xr-x 1 root root 231 2月 1 06:21 test.cgi
-rwxr-xr-x 1 root root 3536 1月 31 22:08 thread.cgi
-rwxr-xr-x 1 root root 3373 1月 31 22:34 toppage.cgi
/root/
drwxr-xr-x 12 root root 4096 1月 30 11:29 .rbenv
/root/.rbenv/
-rw-r--r-- 1 root root 3390 1月 30 11:16 CONDUCT.md
-rw-r--r-- 1 root root 1058 1月 30 11:16 LICENSE
-rw-r--r-- 1 root root 18527 1月 30 11:16 README.md
drwxr-xr-x 2 root root 18 1月 30 11:16 bin
drwxr-xr-x 2 root root 56 1月 30 11:16 completions
drwxr-xr-x 2 root root 4096 1月 30 11:16 libexec
drwxr-xr-x 3 root root 23 1月 30 11:20 plugins
drwxr-xr-x 3 root root 17 1月 30 11:16 rbenv.d
drwxr-xr-x 2 root root 78 2月 1 08:56 shims
drwxr-xr-x 2 root root 87 1月 30 11:16 src
drwxr-xr-x 3 root root 4096 1月 30 11:16 test
-rw-r--r-- 1 root root 6 2月 1 00:09 version
drwxr-xr-x 3 root root 18 1月 30 11:22 versions
/root/.rbenv/bin/
lrwxrwxrwx 1 root root 16 1月 30 11:16 rbenv -> ../libexec/rbenv
/root/.rbenv/shims/
-rwxr-xr-x 1 root root 385 1月 30 11:35 erb
-rwxr-xr-x 1 root root 385 1月 30 11:35 gem
-rwxr-xr-x 1 root root 385 1月 30 11:35 irb
-rwxr-xr-x 1 root root 385 1月 30 11:35 rake
-rwxr-xr-x 1 root root 385 1月 30 11:35 rdoc
-rwxr-xr-x 1 root root 385 1月 30 11:35 ri
-rwxr-xr-x 1 root root 385 1月 30 11:35 ruby
参考にしたサイト
・shebangについて
・teratailの過去の似た質問
回答3件
あなたの回答
tips
プレビュー