• 締切済み

CGIがエラーになります。

Kento Webさんで配布されているCGI「Shopping Cart」が Software error: Can't call method "param" on an undefined value at ./lib/menu_list.pl line 310. となり動きません。 **** 経緯 **** これまでは、自宅サーバーCentos6.5で運用していましたが、先日Centos7に入れ替えました。(/var/www/配下はそのまま使用) ・OSインストール後 ・SELinuxの無効化 ファイアウォール停止 ・yum -y install httpd (httpdインストール) ・yum -y install php php-mbstring (php、php-mbstringインストール) ・/etc/httpd/conf/httpd.conf (httpd設定ファイル編集)   Options Includes ExecCGI FollowSymLinks (CGI,SSIの許可)   AllowOverride All (.htaccessの許可)   AddHandler cgi-script .cgi .pl (CGIスクリプト.cgi .plの許可) ・ln -s /usr/bin/perl /usr/local/bin/perl (リンクをはる) この状態で確認するに「Shopping Cart」を含め他のCGIも動きません。 Internal Server Error  BEGIN failed--compilation aborted at  End of script output before headers ネットをググってみるにCGI.pmがインストールされていないようなので ・yum -y install perl-CGI その後確認するに、「Shopping Cart」はNGだが他のCGIはOKとなりました。 「Shopping Cart」のエラー Software error:  Can't call method "param" on an undefined value at ./lib/menu_list.pl line 310. 「Shopping Cart」と一緒に配布されている、「check.cgi」での動作チェックは、CGI.pmインストール前は、Internal Server ErrorでしたがCGI.pmインストール後全てOKとなりました。 パーミッションの確認も行いましたが間違いは無いようです。 よろしくお願いします。

  • CGI
  • 回答数1
  • ありがとう数14

みんなの回答

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

で、 ./lib/menu_list.pl line 310. は何が書かれている??

ski_001
質問者

補足

早々のご返事ありがとうございます。 ./lib/menu_list.pl line 310.の近くは下記です。 よろしくお願いします。 304 # セッションを開く(更新モード) 305 my $ses; 306 if ($key) { 307 $ses = CGI::Session->new(undef, $in{sid}, {Directory => $cf{sesdir}}); 308 309 # 有効時間指定 310 $ses->expire($cf{ses_expire}); 311 312 # Read Only 313 } else { 314 $ses = CGI::Session->load(undef, $in{sid}, {Directory => $cf{sesdir}}); 315 } 316 317 # カートID取得 318 my $id = $ses->param('id');

関連するQ&A

  • apacheでcgiがうまく動かない。cgiが認識されていない?

    すいません、多分基本的な所なのですが、 どうしても分からないので質問させてください。 ■環境------------------------------ ・windowsXP sp2 ・apache1.3.33 C:\Program Files\Apache Group\Apache  現在の状態:html表示可能。httpd.confを変更 ・perl5.6.1 c:\perl  現在の状態:PPMにてimagemagick,DBI,DBD-MySql(だっけ)をインストールしている ・php5.0.4 c:\php ・mysql4.02 C:\mysql ■httpd.confの変更箇所-------------------------------- 337 Options Indexes FollowSymLinks MultiViews ↓ Options Indexes FollowSymLinks ExecCGI MultiViews 538 #!c:/program files/perl/perl ↓ #!C:/Perl/bin/perl 720以降に追加 AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .pl 825以降に追加 AddHandler cgi-script .cgi AddHandler cgi-script .pl ■printenv.plの内容-------------------------------- #!C:/Perl/bin/perl ## ## printenv -- demo CGI program which just prints its environment ## print "Content-type: text/plain\n\n"; foreach $var (sort(keys(%ENV))) { $val = $ENV{$var}; $val =~ s|\n|\\n|g; $val =~ s|"|\\"|g; print "${var}=\"${val}\"\n"; } -------------------------------------------------- 上記のような環境で、いまPERLの動作確認を行っています。 http://localhost/cgi-bin/printenv.pl http://localhost/cgi-bin/printenv.pl PLファイルを指定しても実行されず、ダウンロードされてしまいます。 cgiに拡張子を変えても同じでした。 エラーというわけでもない為、エラーログにも何もかかれません。 何が問題なのでしょうか?

    • ベストアンサー
    • CGI
  • CGI版PHPについて

    一般的なPerlのCGIが実行可能な状態のApache(Linux上)にCGI版のPHPを追加インストールした場合、ApacheはスクリプトがPerlであるかPHPであるかの違いをどう認識するのでしょうか? 方法1 スクリプトはどちらも*.cgiとして作成し、スクリプト内先頭行のperlやphpへのパスの記述で認識する 方法2 perl→*.cgi php→*.php のようにhttpd.confや.htaccessで設定する 初心者のためこの二つくらいしか思い浮かばないのですが、どちらかが正解だったりしますか??

    • ベストアンサー
    • PHP
  • OSXでcgi

    OSXでperlで作ったcgiを動かしたいと思い色々といじってるのですが全く動きません。 apacheのhttpd.confの設定で AccessFileName .htaccess AddHandler cgi-script .cgi AddHandler cgi-script .pl についてはコメントをはずして使えるようにして Perlのパスも#!/usr/bin/perlとしてsiteフォルダとcgiを置いてるディレクトリに.htaccessを下のように記述して作り AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .cgi/ パーミッション設定をちゃんとしてあげてるのですがブラウザからアクセスするとForBiddenとでてしっかりと設定してるはずのパーミッション設定が間違ってますと言われてしまいます。 OSXでcgiを動かすには他にももっと色々と設定しなければダメなんでしょうか?

    • ベストアンサー
    • Mac
  • ローカル環境でのCGIエラー

    ActivePerlとAn HTTPdでWindowsXP HomeEditionのPC上でCGIを動かそうと思っています。 どちらも最新版をダウンロードしてインストールしました。 ActivePerlに関してはegフォルダ下のexample.plで動作確認が取れています。 An HTTPdに関してはhttp://127.0.0.1以下のURLを指定してページが表示されています。 ですが、htmlからcgiを呼び出そうとすると「ページを表示できません」「サーバーが見つからないか、DNS エラーです。」のエラーが出てしまいます。 試しにcgiファイルをフルパスで指定したのですが同じでした。 ちなみに、簡単なCGIプログラムtest.cgiを作成、サーバにアップして動作を確認しましたがローカルではエラーになります。 また、ローカルでコマンドプロンプトにて c:\usr\local\bin\perl c:\プログラムのパス\cgi-bin\test.cgi と入力すると内容を表示します。 コマンドプロンプトでCGIプログラムのあるcgi-binディレクトリに移動して perl -v と入力するとperlのバージョン情報を表示するので、パスは通っていると思われます。 Au HTTPdのerrors.logには Thu Aug 16 19:21:18 2007 Warning: CGI TerminateProcess 2500 error 5 とりあえず、自分で原因を絞れるであろうところはあたってみたつもりですが、何か見落としていることがあるでしょうか? もしかしたらAu HTTPdに問題があるでしょうか?

    • 締切済み
    • CGI
  • PHP myADMINインストール時のエラー

    PHP myADMINをインストールしようとしていますが、 「mysql 拡張がありません。PHP の設定をチェックしてみてください。」 とエラーが出て先へ進めません。 設定は下記で設定しました。 yum -y install php-common yum -y install php-mbstring yum -y install php-mcrypt yum -y install php-mysql config.inc.php $cfg['blowfish_secret'] = '適当な文字'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */とし、これをアップした後、660にパーミッション変更 php.iniの設定は extension_dir = /usr/lib/php/modules extension=mysql.so extension=mbstring.so これでよさそうなのですが、相変わらず「mysql 拡張がありません。」が出てきます。 phpinfoを見ると、mbstringやmcryptは見えるのですが、mysqlは見えません。 mysqlのデーモンはちゃんと稼働しています。 > find / -name mysql.so とすると /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/auto/DBD/mysql/mysql.soとなります。 extension_dir = /usr/lib/php/modulesのphp.iniの記載に対し、mysql.soが全然違うところに来ておりこれが読めない原因と推測しています。 対策としてのこのmysql.soをコピーして/usr/lib/php/modulesにコピー、再立ち上げしてみましたが駄目でした。 どのようにすれば動くようにご教授願います。 環境は CentOS 5.7 Apache 2.2.3 MySQL 5.0.77 PHP 5.3.8 phpMyAdmin 3.4.7 となります。宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • activeperl5.6が起動できない

    activeperl5.6が動きません。 activeperlをインストールして、apacheのhttpd.confの中身を本を参考に編集しました。 sampleのhello.plというファイルを自分の環境ではc:\www\cgi-binというフォルダーの中にいれ、 ScriptAlias /cgi-bin/ "C:/www/cgi-bin" <Directory "C:/www/cgi-bin"> AllowOverride None Options None AddHandler cgi-script .cgi .pl でcgiの実行を許可して AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .pl で拡張子とperlを関連付けています。 browserからたとえばhttp://localhost/hello.plを入力すると 実行が許可されていないとブラウザーで表示されます。 Forbidden You don't have permission to access /test.pl on this server. Apache/1.3.39 Server at localhost Port 80 アパッチのエラーログを見ると、 [error] [client 127.0.0.1] couldn't spawn child process: c:/

    • ベストアンサー
    • CGI
  • apacheのCGI設定について教えてください。

    CGIの勉強のために、古いパソコンに fedora core 4 をインストールしてapache でローカルのテスト用サーバーにしようとしています。 /var/www/html に設置した簡単な perl CGI は動くのですが、同じものをユーザーのホームディレクトリに設置すると、internal server error になってしまいます。 ***** 以下 httpd.confの抜粋です。***** #UserDir disable UserDir public_html <Directory /home/*/public_html> AllowOverride All Options Includes ExecCGI FollowSymLinks SetHandler cgi-script </Directory> AddHandler cgi-script .cgi .pl ************************************** サーバーのエラーログを見ると Premature end of script headers: test.cgi となっています。htmlをprintしているだけのスクリプトで、/var/www/html では動くので、apache の設定の問題かと思っています。 ちょっとカテゴリーが違うかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • Perl
  • windows2003でcgiを動作させるには

    社内イントラネットを開設しようと思っています。 windows2003サーバにIISをインストール後、Perlをインストールしました。 が、htmlは見る事が出来るのですが、cgiが開けません。 cgiを開くと、エラーメッセージが出てきます CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers どのようにすれば、cgiが動作するのか、ご教授願います。 cgi・plファイルのマッピングから、IISの拡張機能での「許可」の設定もしてみましたが、できません。 *active perlをインストールした際、plファイルについては、マッピングが自動的にできていませんでした。拡張機能にもperl関係のものがなく、自分でネットを見て記入してみました。 ご教授、よろしくお願いします。

  • cgiが動きません・・・

    初めて質問させていただきます。 動かしたいcgi:http://jam.apricot.co.jp/affiliate/aws/netamazon.html        (このcgiを改造して、出力項目を増やし、適当な区切り記号の         csvファイルとして保存しようと思っています。) 場所:xrea.com(仕様は http://www.xrea.com/?action=spec) 行った手順:  1.cgiソースをテキストエディタにコピペ、「browse.cgi」としてFTP。   属性を755に。  2.Script Errorが出たので、http://www.execweb.cx/~appoh/soft/check.htm   のperlチェッカーを使用してチェック。すると、   「Can't locate Net/Amazon.pm in @INC ~at ./browse.cgi 行番号 10.」   との結果。該当行のNet::Amazonモジュールが無いと判断。  3.http://net-amazon.sourceforge.net/ より、Net-Amazon-0.29.tar.gzを   ダウンロード。解凍後、libフォルダ内のNetフォルダ以下を全て   browse.cgiと同じ場所にFTP。Net内の「Amazon.pm」の属性を755に。  4.同じくperlチェッカーを使用してチェックすると、   「Can't locate Log/Log4perl.pm in @INC ~at Net/Amazon.pm     行番号 19.」   との結果。   http://log4perl.sourceforge.net/ より、Log-Log4perl-0.48.tar.gzを   ダウンロード。解凍後、libフォルダ内のLogフォルダ以下を全て   先程のNetフォルダ内、Amazon.pmと同じ場所にFTP。「Log4perl.pm」の   属性を755に。  5.4とエラー内容が変わらず、「Can't locate Log/Log4perl.pm in @INC    ~at Net/Amazon.pm 行番号 19.」の表示。その後、Amazon.pmと同じ   階層に直接Log4perl.pmを置いてみたりしましたが、エラーメッセージは   変わりませんでした。 根本的に間違っているのでしょうか・・・ 是非ご教授いただければ幸いです。何卒宜しくお願い致します。

    • ベストアンサー
    • Perl
  • cgiの500エラー

    OSXを使っている者です miで文字コードEUC 改行コードLFです #!/usr/bin/perl print "hello"; と書いてtest.plで保存して パーミッションをchmodのコマンドで755 にして共有を可能にしてローカルで試したんですが ソースが表示されて全然有効になってないみたいです PHPもそうでした .phpで書いてhtmlの中に埋め込んで パーミッションも755にしてもソースが全部表示されて動かなかったです 拡張子は.plではなくてcgiなのか気になります ソースも違ってたら教えて下さい ちなみにwebサーバーで試したら Internal Server Error 500でしたftpでchmodで755にしたんですが もしかしてソースミスでしょうか? CGIのソースなどやり方の一覧を詳しく簡潔に教えて下さい御願いします

    • ベストアンサー
    • Perl

専門家に質問してみよう