さくらインターネットで開発中WEB経由でCGIが正常に動かない場合(2)
実行方法が違うとは言え、
同じサーバーであるアプリが動いたり動かなかったりするということは、
環境変数が疑わしいです。
こんなシンプルな環境変数確認スクリプトを使います。
#!/usr/bin/perl print "Content-Type: text/html\n\n"; print <<END_HTML; <html> <head><title>環境変数テスト表示</title></head> <body> $ { foreach $key (keys %ENV) { print "$key : $ENV{$key}<br>\n"; } } </body> </html> END_HTML
SSHでログインしてから実行した結果です。
$ ./env.cgi
みたいにして実行します。
Content-Type: text/html SSH_CLIENT : 182.170.182.130 54025 22<br> HOST : www758.sakura.ne.jp<br> REMOTEHOST : pb6aab682.tubehl00.ap.so-net.ne.jp<br> BLOCKSIZE : K<br> OSTYPE : FreeBSD<br> PWD : /home/****/www/WordPress/kyokigo<br> LANG : ja_JP.UTF-8<br> USER : ****<br> LC_MESSAGES : C<br> LOGNAME : ****<br> GROUP : users<br> SHLVL : 2<br> PERL5LIB : /home/****/perl5/lib/perl5:/home/****/local/lib/perl5:/home/****/local/lib/perl5/site_perl<br> PATH : /home/****/perl5/bin:/home/****/.local/bin:/home/****/local/bin:/home/****/local/bin:/home/****/local/bin<br> FTP_PASSIVE_MODE : YES<br> HOSTTYPE : FreeBSD<br> TERM : xterm<br> SSH_TTY : /dev/pts/0<br> PAGER : more<br> HOME : /home/****<br> LD_LIBRARY_PATH : /home/****/local/lib<br> SSH_CONNECTION : 182.170.182.130 54025 59.106.19.208 22<br> PORT_DBDIR : /home/****/local/var/db/pkg<br> PKG_DBDIR : /home/****/local/var/db/pkg<br> MAIL : /var/mail/****<br> EDITOR : jvim3<br> VENDOR : amd<br> PERL_CPANM_OPT : --local-lib=~/perl5<br> OLDPWD : /home/****/www/WordPress<br> _ : ./env.cgi<br> SHELL : /bin/csh<br> MACHTYPE : x86_64<br> PYTHONPATH : /home/****/local/lib/python:/home/****/local/lib/python/site-packages<br> <html> <head><title>環境変数テスト表示</title></head> <body> </body> </html>
次にブラウザ経由の結果です。
SCRIPT_NAME : /kyokigo/env.cgi SERVER_NAME : azi2.com SERVER_ADMIN : support@sakura.ad.jp HTTP_ACCEPT_ENCODING : gzip, deflate HTTP_CONNECTION : keep-alive REQUEST_METHOD : GET HTTP_ACCEPT : text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 SCRIPT_FILENAME : /home/****/www/WordPress/kyokigo/env.cgi SERVER_SOFTWARE : Apache/2.2.31 QUERY_STRING : REMOTE_PORT : 54135 HTTP_USER_AGENT : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36 SERVER_PORT : 80 SERVER_SIGNATURE : HTTP_CACHE_CONTROL : max-age=0 HTTP_UPGRADE_INSECURE_REQUESTS : 1 HTTP_ACCEPT_LANGUAGE : ja,en-US;q=0.8,en;q=0.6 HTTP_COOKIE : tk_tc=1494519311953; tk_ai=jetpack%3AMCzZhyihuZp1GWiGp6icQbIg; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_a3334da665c02922f2d3819a4a81bc86=****%7C1498928562%7COOozksxcFZgKTYwZJgHSZ52mXcjyr88tS7s7yKBA3M2%7C563dabd3211c252e3f0c5ada0cd6da24fd73a8304b4edb2a9c6336d85a2b1392; wp-settings-1=editor%3Dtinymce%26libraryContent%3Dbrowse%26imgsize%3Dmedium; wp-settings-time-1=1498890306 REMOTE_ADDR : 182.170.182.130 SERVER_PROTOCOL : HTTP/1.1 PATH : /usr/local/bin:/usr/bin:/bin REQUEST_URI : /kyokigo/env.cgi GATEWAY_INTERFACE : CGI/1.1 SERVER_ADDR : 59.106.19.208 REMOTE_HOST : pb6aab682.tubehl00.ap.so-net.ne.jp DOCUMENT_ROOT : /home/****/www HTTP_HOST : azi2.com
かなり少なく、シンプルになっている感じがしますね。
ざっとみた感じでは
ユーザーのPATHが通ってないのと、
HOME、LANG、LD_LIBRARY_PATHがないですね。
環境変数を強引に設定する
もしかするともっと正しいやり方があるような気がしますが、
強引に環境変数を設定してしまいましょう。
$ENV というハッシュのキーを環境変数名にして設定すれば良いです。
こんな風に冒頭に入れ込みます。
$ENV{'HOME'}="/home/****"; $ENV{'LANG'}="ja_JP.UTF-8"; $ENV{'PATH'}="/home/****/perl5/bin:/home/****/local/bin"; $ENV{'LD_LIBRARY_PATH'}="/home/****/local/lib";
もう一度ブラウザ経由で実行してみます。
反映されました!
HOME : /home/**** SCRIPT_NAME : /kyokigo/env.cgi SERVER_NAME : azi2.com LD_LIBRARY_PATH : /home/mlin/local/lib SERVER_ADMIN : support@sakura.ad.jp HTTP_ACCEPT_ENCODING : gzip, deflate HTTP_CONNECTION : keep-alive REQUEST_METHOD : GET HTTP_ACCEPT : text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 SCRIPT_FILENAME : /home/****/www/WordPress/kyokigo/env.cgi SERVER_SOFTWARE : Apache/2.2.31 LANG : ja_JP.UTF-8 QUERY_STRING : REMOTE_PORT : 54374 HTTP_USER_AGENT : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36 SERVER_PORT : 80 SERVER_SIGNATURE : HTTP_CACHE_CONTROL : max-age=0 HTTP_UPGRADE_INSECURE_REQUESTS : 1 HTTP_ACCEPT_LANGUAGE : ja,en-US;q=0.8,en;q=0.6 HTTP_COOKIE : tk_tc=1494519311953; tk_ai=jetpack%3AMCzZhyihuZp1GWiGp6icQbIg; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_a3334da665c02922f2d3819a4a81bc86=****%7C1498928562%7COOozksxcFZgKTYwZJgHSZ52mXcjyr88tS7s7yKBA3M2%7C563dabd3211c252e3f0c5ada0cd6da24fd73a8304b4edb2a9c6336d85a2b1392; wp-settings-1=editor%3Dtinymce%26libraryContent%3Dbrowse%26imgsize%3Dmedium; wp-settings-time-1=1498890306 REMOTE_ADDR : 182.170.182.130 SERVER_PROTOCOL : HTTP/1.1 PATH : /home/****/perl5/bin:/home/****/local/bin REQUEST_URI : /kyokigo/env.cgi GATEWAY_INTERFACE : CGI/1.1 SERVER_ADDR : 59.106.19.208 REMOTE_HOST : pb6aab682.tubehl00.ap.so-net.ne.jp DOCUMENT_ROOT : /home/****/www HTTP_HOST : azi2.com
これで多分うまくいくはずです!
ディスカッション
コメント一覧
まだ、コメントがありません