2017-02-21 3 views
2

ようにcgi-scriptを実行するために、ドッキングウィンドウのファイルを構成し、私はこのファイルを持っている:どのようにperlの

  • のindex.php
  • Dockerfile
  • のcgi-binに
  • /conf/myawesomesite.conf/

    :/conf/myawesomesite.confでhelloworld.pl

Dockerfile 0

FROM ubuntu:16.04 

## Install Base Packages 
RUN apt-get update && apt-get -y install \ 
    apache2 \ 
    make \ 
    curl \ 
    git \ 
    gcc 

RUN a2enmod rewrite 

## Install Perl 
RUN apt-get update && apt-get -y install \ 
    libapache2-mod-perl2 \ 
    perl 

RUN a2enmod perl 

## Install PHP 
RUN apt-get update && apt-get -y install \ 
    php7.0 php7.0-cli php7.0-common php7.0-fpm php7.0-json \ 
    php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-opcache php7.0-readline \ 
    libapache2-mod-php7.0 

RUN a2enmod rewrite 


EXPOSE 80 

RUN mkdir -p /var/www/html/myawesomesite.com/httpdocs 

RUN mkdir -p /var/www/myawesomesite.com/logs/ 

COPY ./conf/myawesomesite.conf /etc/apache2/sites-available/ 
RUN a2ensite myawesomesite 
RUN a2dissite 000-default.conf 

CMD /usr/sbin/apache2ctl -D FOREGROUND 

ビルドとコンテナを実行するには、index.phpのは、正しく実行するが、このページmyawesomesite.com/cgi-bin/helloworld.plスクリプトがちょうど印刷されたときに実行されていません。結果を以下:

#!/usr/bin/perl 

print "Content-Type:text/html\n\n"; 
print "Hello World!"; 

私は私が私のmyawesomesite.confファイルでこれらのディレクティブを追加しましたので、結果はHello World!で期待しています。しかし、なぜ?

Options ExecCGI AddHandler cgi-script .pl

答えて

1

あなたDockerfileに追加しよう:

RUN chmod +x cgi-bin/helloworld.pl 

CGIスクリプトは実行ビットが設定されている必要があります。

0

Iは、(perlスクリプトを/var/www/myawesomesite.com/www/cgi-bin/にコピーされたと仮定して)CONFにDockerfile、次のブロックにRUN a2enmod cgidを追加しなければならなかった:

<Directory "/var/www/myawesomesite.com/www/cgi-bin/"> 
    Options +ExecCGI 
    AddHandler cgi-script .pl 
</Directory> 
関連する問題