web-dev-qa-db-ja.com

cgiを実行できません。プレーンテキストのみを表示します(Ubuntu 13.10 Apache 2.4)

Ubuntu 13.10をインストールし、Apacheをインストールしようとしています。しかし、cgi-binでPerlファイルを実行しようとすると、ブラウザにはプレーンテキストしか表示されませんでした。

Apacheのdefault.confは次のとおりです。

    AddHandler cgi-script .cgi .pl
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +Indexes +ExecCGI +MultiViews +SymLinksIfOwnerMatch
            #Order allow,deny
            Require all granted
            Allow from all
    </Directory>

これは私のPerl cgiファイルです:

    #!/usr/bin/Perl
    print "Content-type: text/html\n\n";
    print "<html>\n";
    print "<title> Perl CGI</title>\n";
    print "<body>";
    print "hello Perl-cgi!!!!!!!";
    print "</body>";
    print "</html>\n";

Mime.confでハンドラーをオンにしました。ファイルは/ usr/lib/cgi-binにあり、file:///ではなくhttpとして実行します。 mod_Perlもインストールしました。 Apacheは初めてです。私は数時間検索しましたが、無限のApache設定を試し、Apacheのドキュメントを読んでも解決できません。 「+ ExecCGI」コードに問題があるからでしょうか? Ubuntu 12.04を13.10にアップデートした後、他の人も同様の問題に遭遇するのを見ました。たぶんUbuntuが問題ですか?助けてください。 Apacheの設定とUbuntuの許可は、ほとんど私を怒らせています。

15
user3026793

このコマンドで試してください:

Sudo a2enmod cgi

次に、Apacheを再起動します。

45
tops

Ubuntu 14.04でバグジラを設定しようとしたときにこの問題が発生しました。@ Andrewの回答は素晴らしく、@ Kevinのリンクもそうでした。cgiを有効にする以外に、Apache2用のPerlのモジュールがインストールされていることを確認してください。これは次の方法で実行できます。

Sudo apt-get install libapache2-mod-Perl2

これにより、モジュールが自動的に有効になるだけでなく、Apacheサーバーが再起動します。そうでない場合は手動で行います。

両方を賛成するのに十分な担当者がいないので、感謝します。

7
kaykae

@topsから answer を展開します。

Apacheチュートリアル:CGIを使用した動的コンテンツbuntu HTTDP または PHPでApache2ウェブサーバーをインストールする方法)などのチュートリアルに従っている場合は、Sudo a2enmod cgiを試してください。 、CGI、およびUbuntuサーバーでのPerlのサポート であり、それらに何が欠けているのかはまだわかりません。

次に、Apacheを再起動します。

これは次のように行うことができます:

Sudo /etc/init.d/Apache2 restart
Sudo Apache2ctl restart
Sudo service Apache2 restart <-最初に試してください

これは私にとってUbuntu 13.10で動作しました。


RedHadベースのディストリビューションからのユーザーへの新しいコマンド:

  • モジュール
    • a2enmod
    • a2dismod
  • 構成
    • a2enconf
    • a2disconf
  • 仮想サイト
    • a2ensite
    • a2dissite

メインの構成ファイルはデフォルトで/etc/Apache2/Apache2.confであり、モジュールとWebサイトの個々の構成コンポーネントは別々のファイルにあることに注意してください。


編集:このページ にアクセスする人々がなぜ問題を抱えているのかについての詳細が展開されていますUbuntuでApache CGIを有効にします。

6
Kevin

Ubuntu 13.10にApacheをインストールする手順:

  • Sudo apt-get install Apache2
  • Sudo service Apache2 start

Ubuntu 13.10でApacheをテストする手順:

  • http://your-Host-here.com/ (または、ホストが構成されているもの)にアクセスします。
  • 「動作する」のWebページを参照してください。

Ubuntu 13.10のApacheでCGIプログラムを使用する手順:

  • なし。 CGIはデフォルトで構成されています。

Ubuntu 13.10上のApacheでCGIプログラムをテストする手順:

  • /usr/lib/cgi-bin/内のファイルを編集します(例:/usr/lib/cgi-bin/test
  • いくつかのPerlコードを追加します(例:上記のコード)
  • Sudo chmod +x /usr/lib/cgi-bin/test
  • 訪問 http://your-Host-here.com/cgi-bin/test

注:「your-Host-here.com」は「localhost」である可能性がありますが、SOは使用できませんURLで使用させてください:-/

0
Dave Cross

Apache cgiモードが有効になっていることを確認してください

Sudo a2enmod cgi   //will enable the cgi mode
Sudo a2dismod cgi  //Will disable the cgi mode

すべてのファイルをwebrootの「cgi-bin」フォルダに保存します

Sudo mkdir /home/www/cgi-bin

.cgiファイルへのファイル権限が適切であることを確認してください

Sudo chmod 755 yourFile.cgi

端末から実行してみてください

Perl /Path_To_The_File/fileName.cgi

FileName.cgiにファイルの先頭に以下のコードが含まれていることを確認してください

#!/usr/bin/Perl -w

print "Content-type: text/html\n\n";

上記のすべてのステップがうまく機能している場合

Perlプロジェクト用にApacheで仮想ホストを作成する

cp /etc/Apache2/sites-available/000-default.conf ./your_project.conf
Sudo nano /etc/Apache2/sites-available/your_project.conf

Your_project.confファイル内で、次の行を置き換えます

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/cgi-bin          //Define where your project is
    ServerName your_project.com                 //URL through which you want to access
    ServerAlias your_project.com


    ErrorLog ${Apache_LOG_DIR}/error.log        //Error for the project will store in this file
    CustomLog ${Apache_LOG_DIR}/access.log combined


    ScriptAlias /cgi-bin/ "/var/www/html/cgi-bin/"  //particular directory is set aside for CGI programs

    <Directory /var/www/html/cgi-bin/>
    ##TO consider the files as cgi which has .cgi and .pl extension
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl

    ##To consider all files as cgi file  (if want to use remove # from last two line add in above 2 line)
    #Options ExecCGI
    #SetHandler cgi-script
    </Directory>

</VirtualHost>

これらのコマンドを実行する

Sudo a2ensite your_project.conf      //Will enable your configuration file
Sudo service Apache2 restart         //Restarting Apache2

ホストを追加

Sudo nano /etc/hosts
//add this line
127.0.0.1   your_project.com

ここで、cgiファイルを実行します。

your_project.com/cgi-bin/fileName.cgi
0
bikash.bilz