• ベストアンサー
  • 困ってます

CGIが動かない

/var/www/html/hoge.cgiを作りました。 ----- #!/usr/bin/perl print <<'END'; Content-type: text/html; charset=utf-8 <html> <body> <p>hoge</p> </body> </html> END ----- ターミナル上でperl hoge.cgiとやった場合も、実行権を与えて./hoge.cgiとやった場合も、出力はちゃんとなされました。 httpd.confにはExecCGIとAddTypeにより、ソーステキストがそのまま表示されていたのを、Internal Server Errorまでこぎつけたのですが、なんでエラーなのかわかりません。 CGIってもしかしたら所有者がrootだと動きませんか? あとはぜんぜん思い当たることがなくて・・・。 Redhat7.3 Apache1.3.23

共感・応援の気持ちを伝えよう!

  • 回答数10
  • 閲覧数128
  • ありがとう数10

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.7

> mod_perlの利用はPerlによるCGI使用者にとって、かなり魅力的ですが、 > 実行スクリプトの量によってはメモリ消費が多くなることがあります。 > また、通常のCGIスクリプトは、おそらくmod_perlでは動作しない場合があるので、 > mod_perl用に注意深くコードを書き換える必要があります。 そんなことがあるのですね。 mod_perlというのを知らなかったのですが、 > mod_perlを組み込んでいない、素のhttpd.confを使ってみてください。 の反対で、redhat7.3の素の状態から組みこんでみました。 結果ですが、この test script では特に問題がありませんでした。 やったこと $rpm -ivh mod_perl-1.26-5.i386.rpm $diff httpd.conf.org httpd.conf 480c480 < Options Indexes FollowSymLinks --- > Options Indexes FollowSymLinks ExecCGI 973c973 < #AddHandler cgi-script .cgi --- > AddHandler cgi-script .cgi 1073,1080c1073,1080 < #<IfModule mod_perl.c> < # Alias /perl /var/www/perl < # <Directory /var/www/perl> < # SetHandler perl-script < # PerlHandler Apache::Registry < # Options +ExecCGI < # </Directory> < #</IfModule> --- > <IfModule mod_perl.c> > Alias /perl /var/www/perl > <Directory /var/www/perl> > SetHandler perl-script > PerlHandler Apache::Registry > Options +ExecCGI > </Directory> > </IfModule> # これでいいのかな?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

mod_perlをインストールしなおして、この部分を書きなおしてみようと思います。

質問者からの補足

すでにIfModule mod_perl.cの部分は書いてあったようです。

関連するQ&A

  • Mac OS X 10.5 LeopardのApache2でCGIを動かせない

    MacPro Mac OS X 10.5にてローカルでCGIの動作確認をしようと試み、Apache2を起動し、http://localhost/~ユーザー名/xxx.cgiで確認しようとしたところ、Internal Service Errorが発生します。定石通り以下を設定したのですが、改善しません。どなたか同じ症状の方で解決された方、もしくは解決法をご存じの方、お知恵を拝借させてください。 Leopardは10.4以前と違い、CGIを動かすのに、httpd.confの設定ではなく、etc/apache2下のユーザー名.confを直すということだったので、以下のようにユーザー名.confを設定しました。改行コードはLFです。 //---------------- <Directory "/Users/ユーザー名/Sites/"> AddHandler cgi-script .cgi AddHandler cgi-script .pl AddType text/html .shtml AddHandler server-parsed .shtml Options Indexes MultiViews ExecCGI Includes AllowOverride None Order allow,deny Allow from all </Directory> ターミナルでapachectl configtestを行い、Syntax OKと出た後、apachectl restartを実行し、apache2を再起動させ、 perlコマンドのパスがターミナルのwhich perlで/usr/bin/perlだったので、!# /usr/bin/perlを指定したcgiファイルをつくり、ユーザーのホームディレクトリ下のサイト下に置き、パーミッションを755に設定。これでブラウザで確認すると、internal server errorが出ます。もちろんlocalhostやlocalhost/~ユーザー名はブラウザ上で表示されます。Error_logを確認しても、Premature end of script headersと出るだけです。 お心当たりのございます方、どうかご教授ください。

    • 締切済み
    • CGI
  • 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が使えないのはなぜ?

    こんにちは。 現在Redhat8を使用して、サーバーを作っています。apacheを起動してサイトが表示できるまではOKだったのですが、CGIを使う段階でつまづいています。 httpd.confは様々なサイトを見てそのとおりに編集したのですが、いざCGIを起動するとServerError!となります。Error_logを見ると↓のような妙な文章でした。Permissionなら分かるのですが、、これは何でしょう。 Premature end of script headers: XXX.cgi CGIの先頭のPerl指定は #!/usr/bin/perl にしてあります。何が悪いのか分からず途方にくれています。何かチェックする部分があればどうかご指摘ください。お願いします。パーミッションの設定は完了しており、CGIスクリプト自体も先頭以外はいじっていません。 RedHat8.0 Apache2.0 /home/www/html にHTMLファイル /home/www/cgi-bin にCGIスクリプト ----------------以下関係のありそうなhttpd.confの抜粋 ScriptAlias /cgi-bin/ "/home/www/cgi-bin/" <Directory /home/www/cgi-bin> Options ExecCGI Order allow,deny Allow from all </Directory> AddHandler cgi-script .cgi

その他の回答 (9)

  • 回答No.10
  • xjd
  • ベストアンサー率63% (1021/1612)

回答ではなくアドバイスですが、 そういえば一度も確認しなかったのですが、 お使いのApacheはRedHatのパッケージ版? 問題が長引きそうなら、Apacheをソースからコンパイル・インストールしてみてはどうでしょう? # ./configure # make # make install この3行だけで、できますので簡単です。 ディストロに標準のApacheとかはどうも好きになれなくて...

共感・感謝の気持ちを伝えよう!

質問者からのお礼

CD-ROMからインストールしたままです。 運がよければup2dateでかってにアップグレードしてるかもしれませんが。 とりあえず、Apaceh2.0にチャレンジしてみようとおもいます。 src.rpmの使い方を教わったので、いろんな新しいものをインストールしてみたくなりました。 ありがとうございました。

質問者からの補足

この場を借りてこの質問に答えてくださったお二人に御礼を言いたいと思います。 いろいろ基礎を教わったので、それをもとにがんばろうと思います。 ありがとうございました。

  • 回答No.9

> 本に書いてあったとおりやってみたので、Apache設定ツールを1回使ってしまいまし > た。 > これで自動的に設定ファイルが書き変わったらしいですが、初期状態のファイルって > 残ってますか? さーて?? 自分で変更するときは必ずバックアップをとるんだけど、うっかりGUIツールを 使うと訳が分からなくなりがちですよね。 > mod_perlをインストールしなおして、この部分を書きなおしてみようと思います。 ちょっとまった。 どうせなら、httpdも入れ直して、回答4または回答6を試みるのが早道では?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

すみません。 ディレクトリのマスクに、何を血迷ったのかtが入っていました・・・。 これを消すと動くようになりました・・・。 なんともお騒がせしました。 でもApacheは2.0も出てるみたいですし、mod_perlも含めて最新のものを導入してみようと思います。

質問者からの補足

さて今度は apache-2.0.43-0.2.src.rpm proftpd-1.2.7rc1_pg-1.03.src.rpm がコンパイルできないという自体に陥りました・・・。

  • 回答No.8
  • xjd
  • ベストアンサー率63% (1021/1612)

>そんなことがあるのですね。 haporunさんの、サンプルは簡単な基本形なので、文法的には問題なかったみたいですね。 >mod_perlというのを知らなかったのですが、 昔、mod_perl独特の書き方があるのを知らずに、ツボにはまった経験があります。それ以来はもっぱらPHPです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

PHPは、本を見ながら掲示板を作るくらいならやったことがあります。 Perlと同じような文法で、Cっぽい関数が使えるので、とっつきやすかったです。 Windows + IIS or AnHttpdではどちらも動かすに至っているんですが、Linuxではなかなかです。

  • 回答No.6

> .htaccessのなかにExecCGIを書かなければならないのですか? > httpd.confの中に書いてはダメでしたか? いえ、別に。いろんな方法があるというだけです。 httpd.confだけですませるには、 $ diff httpd.conf.org httpd.conf 480c480 < Options Indexes FollowSymLinks --- > Options Indexes FollowSymLinks ExecCGI 973c973 < #AddHandler cgi-script .cgi --- > AddHandler cgi-script .cgi だけでオッケーですね。これなら.htaccessは不要でした。 いずれも redhat7.3のインストール直後の状態からの変更です。 httpd.confを初期状態に戻してから、落ち着いてやり直した ほうが良いのでは? 初期状態なら、何もしなくても /var/www/cgi-bin/ 以下でcgiが動いたと書きましたが試してみましたか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

本に書いてあったとおりやってみたので、Apache設定ツールを1回使ってしまいました。 これで自動的に設定ファイルが書き変わったらしいですが、初期状態のファイルって残ってますか?

  • 回答No.5
  • xjd
  • ベストアンサー率63% (1021/1612)

mod_perlを組み込んでいない、素のhttpd.confを使ってみてください。 mod_perlの利用はPerlによるCGI使用者にとって、かなり魅力的ですが、 実行スクリプトの量によってはメモリ消費が多くなることがあります。 また、通常のCGIスクリプトは、おそらくmod_perlでは動作しない場合があるので、 mod_perl用に注意深くコードを書き換える必要があります。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

mod_perlはLinuxインストール時にいっしょにチェックを入れたのですが、これをどこで組み込んでいるとか、ちょっと理解不能なもんで・・・。 しかし、これだけシンプルなスクリプトで、違いが現れるでしょうか・・・。

  • 回答No.4

$ diff httpd.conf.org httpd.conf 487c487 < AllowOverride None --- > AllowOverride Options 973c973 < #AddHandler cgi-script .cgi --- > AddHandler cgi-script .cgi っと変更して、httpdを再起動。あとは、cgiを許可したいディレクトリに .htaccessを作成。 $ cat /var/www/html/.htaccess Options +ExecCGI こんなところで、できますね。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

.htaccessのなかにExecCGIを書かなければならないのですか? httpd.confの中に書いてはダメでしたか?

  • 回答No.3

redhat7.3の標準の状態で、 /var/www/cgi-bin/ にこのスクリプトを置いたら、 http://server.domain/cgi-bin/hoge.cgi で動きましたよ。 標準では、このディレクトリにしかcgiが許可されていないのでは? apacheの設定で、/var/www/html/ 以下にcgiを許可する必要が あるのだと思います。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

<Directory /var/www/html> Options ExecCGI Addtype・・・ とか書いて、ソーステキストが表示されるところから、実行してるけど失敗してるっぽいところまではいってるんですが・・・。

  • 回答No.2
  • xjd
  • ベストアンサー率63% (1021/1612)

711は明らかにだめですね。Apacheの所有者が、スクリプトを 読んで・実行する 権限が必要ですから。 でも、755でもだめでしたか? こちらは、/usr/local/apache/cgi-bin/に置いてます。 こちらでのスクリプトの権限は -rwxr-xr-x 1 root root 118 Dec 17 11:20 test.cgi* です。 ディレクトリの権限は drwxr-xr-x 2 root root 4096 Dec 17 11:20 cgi-bin/ drwxr-xr-x 14 root root 4096 Dec 13 16:37 apache/ です。 ファイル・ディレクトリの権限に問題なければhttpd.confが怪しい事になりますね。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

711でダメなんですか? 読めなくても実行できれば良いのかと思っていました。 ディレクトリの権限も755なんですが・・・。 学校のサーバーは、700で動いてしまうのですが、これはmod_perlが原因なのでしょうか? 私もmod_perlをインストールしたのですが、mod_perlは所有者の権限で動くって聞きました。 これが原因?

  • 回答No.1
  • xjd
  • ベストアンサー率63% (1021/1612)

このスクリプトをうちのサーバで試してみたら、無事に hoge と表示されましたので、文法ミスではないですね。 このスクリプトのファイル権限を確認してください。 このスクリプトを実行するのはApacheの所有者です。 Apacheの所有者が実行できる権限が必要です。 Apacheの所有者は、たとえばnobodyとかwwwとかに、 なっているはずです。 答えを言ってしまうと、一言で終わってしまいますので、ちょっと考えてみてください。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございます。 chmod 711 hoge.cgiはしてあり、rwx--x--xになってはいるんですが・・・。 755も試しました。 いったい何が原因なんでしょう。

関連するQ&A

  • fedora core3でCGIがソースコードで表示されてしまいます。

    document root("var/www/html")でCGIを使うために、httpd.confの設定で#Addhandler cgi-script →Addhandler cgi-script , と書き直し、<Directory"var/www/html">のoption項目にExecCGIと追加しました。 アクセスするときはlocalhost/***.cgiとしています。 cgi fileのperlのパスが#!/usr/bin/perlとなっているのでその場所にちゃんとperlがあるかも確認しました。 .cgiファイルはWindowsXPからASCIIで転送したものです。.httpd.confの設定以外はデフォルトの状態です。 何日間か試行錯誤したのですが、うまくいきません。どうかご助言お願いします。

  • CGI

    MacOS10.10のApache2でCGIが動きません。 httpd.confの最後にこう記述してます。 <VirtualHost *:80> DocumentRoot "/Users/ユーザー/Sites/www" ServerName ドメイン <Directory /Users/ユーザー/Sites/www> AllowOverride All Options Indexes MultiViews ExecCGI FollowSymLinks AddType application/x-httpd-cgi .cgi .pl AddHandler cgi-script .pl .cgi DirectoryIndex index.html index.htm index.cgi </Directory> </VirtualHost> 記述は合ってると思うんですが……どこが間違ってるのでしょう?

    • ベストアンサー
    • Mac
  • 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
  • apache でバイナリのCGIを動かすには

    apache でバイナリのCGIを動かすにはどうすればよいのでしょうか? (なお、プログラム自体に問題は決してありません。『HTTPD』を使うと問題なく動作します) OS:WIN98 C++バイナリのCGIを呼び出すと下記エラーとなります。 Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please .... the error. More ... log. - Apache/1.3.12 Server at http://127.0.0.2/ Port 80 最終アクセスログ 127.0.0.1 - - [12/Mar/2001:23:20:27 +0900] "GET /ab.cgi HTTP/1.1" 500 610 最終エラーログ [Mon Mar 12 23:20:25 2001] [error] [client 127.0.0.1] Premature end of script headers: e:/www.homepage/kokucho81/ab.cgi apache の httpd.conf と httpd.conf.default との比較 ** httpd.conf ServerName http://127.0.0.2/ ** httpd.conf.default #ServerName new.host.name ** httpd.conf DocumentRoot "E:/WWW.HOMEPAGE/KOKUCHO81" ** httpd.conf.default DocumentRoot "C:/Apache/htdocs" ** httpd.conf <Directory /> Options FollowSymLinks ExecCGI AllowOverride None ** httpd.conf.default <Directory /> Options FollowSymLinks AllowOverride None ** httpd.conf <Directory "E:/WWW.HOMEPAGE/KOKUCHO81"> ** httpd.conf.default <Directory "C:/Apache/htdocs"> ** httpd.conf Options Indexes FollowSymLinks ExecCGI ** httpd.conf.default Options Indexes FollowSymLinks MultiViews ** httpd.conf AddHandler cgi-script .cgi ** httpd.conf.default #AddHandler cgi-script .cgi そもそも、設定が足りてないんでしょうか? apacheを良く使う方、よろしくお願いします。m(_ _)m

  • すみません、二度目です。fedora core3でcgiが動きません。

    すみません、以前も質問したのですが、残念ながら解決に至らなかったので ここでまた質問させていただきました。お詳しい方のアドバイスをよろしくお願い致します。 cgi-binの中にauctというディレクトリを入れその中にあるindex.cgiにアクセスしたいのですが http://localhost/cgi-bin/auct/index.cgi とアクセスすると、500 internal server error となってしまいます。 httpd.confの設定は scriptalias /cgi-bin/ "/var/www/cgi-bin/"を                     ↓ alias /cgi-bin/ "/var/www/cgi-bin/"と変え(#は外しています)、 <Directory "/var/www/cgi-bin"> のoptionsをnoneからExecCGIにしました。 あと #AddHandler cgi-script .cgi の#は外しました。 scriptaliasをaliasに変えたのはindex.cgiにアクセスすると、同ディレクトリ内にある、start.shtmlというファイルを開くという設定になっているので、それをCGIと認識されないようにするためにしました。 そのほかはデフォルトの状態ですので、documentrootはvar/www/htmlです。 各CGIのperlのパスは#!/usr/bin/perlとしていて 実際そこにperlがあるか確認もしました。 設定した後httpdの再起動もしました。 error log は premature end of script headers: index.cgiと File does not exist: /var/www/html/favicon.ico となっています。 この設定でWindowsのapacheはCGIが動作したのですが、fedora core3ではうまくいかないのは どうしてでしょうか?アドバイスお願いいたします。

  • Apach での SSIとCGIとPHP

    Redhat Linux9.0 Perl-5.8.0-88.3 php-4.2.2.-17.2 ですが。。。 ユーザーディレクトリでPerlが動かなくて困っています。 通常、httpd.conf の <Directory /home/*/public_html> の部分に Options MultiViews Indexes SymLinksIfOwnerMatch Includes ExecCGI で動くと思うのですが、なぜかダメでした。 Error message: Premature end of script headers: test.cgi それで、httpd の フォルダを見たところ conf.d/perl.conf というのがあり、そこに次の様に記述したら、perlは動きました。 <Directory /home/*/public_html> SetHandler perl-script PerlHandler ModPerl::Registry::handler PerlOptions +ParseHeaders Options +ExecCGI </Directory> しかし、こうすると今度は SSI と PHP が動かなくなりました。 You don't have permission to access the requested object. It is either read-protected or not readable by the server. なお、上のディレクティブをコメントアウトすると、SSI と PHP はOKです。 この場合、PerlとPHPとSSIのすべてを動くようにするにはどうしたらいいのでしょうか? よろしくお願いします。

  • CGIの設置ができません。

    Apacheのhttpd.confを設定して、aska.cgiという掲示板を動かそうとしているのですが、うまく動きません。 色々調べた結果、httpd.conf内のOptionというところにExec CGIを追記すればいいとのことだったので、 <Directory "C:/Program Files/Apache Group/Apache2/htdocs"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> としましたが、 Options ExecCGI is off in this directory: C:/Program Files/Apache Group/Apache2/htdocs/aska/aska.cgi, referer: http://localhost/aska/ とerror.logには表示されてしまいます。 ちなみにaska.cgiは C:/Program Files/Apache Group/Apache2/htdocs/aska/ に入っています。 よろしくお願いします

  • 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
  • UserDirでCGI版PHPを動作させたい

    お世話になります。 最終的にはsuexecでの動作を目指しておりますが、その前段として UserDirでのCGI版PHPの動作をさせようとしています。 DocumentRoot配下でのCGI版PHPの動作には以下のような設定で成功しました。 [httpd.conf] Action php56-cgi /cgi-bin/php-5.6.27 <Directory "/usr/local/apache2/htdocs/php5test"> Options FollowSymLinks Includes ExecCGI AddHandler php56-cgi .php .html Require all granted </Directory> <IfModule alias_module> : ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" : </IfModule> # ls -l /usr/local/apache2/cgi-bin/php-5.6.27 lrwxrwxrwx 1 root root 22 11月 8 14:58 php-5.6.27 -> /usr/local/bin/php-cgi* /usr/local/apache2/htdocs/php5test/に置いた whoami.php の内容 <?php echo 'Current script owner: ' . get_current_user() . "<br><br>\n"; $current_user = trim(shell_exec('whoami')); echo 'Current user: ' . $current_user . "<br><br>\n"; $c_time = date("Y年n月j日(D) Ah:i"); print("Current time: $c_time<br>\n") ?> http://xx.xx.xx.xx/php5test/whoami.php Current script owner: root Current user: apache Current time: 2016年11月10日... と表示されます。 -------------------------------------------------------------------- ここから本題です。 $ mkdir /home/hoge/php56 $ cd /home/hoge/php56 $ ln -s /usr/local/bin/php-cgi php-5.6.27 $ ls -l lrwxrwxrwx 1 hoge hoge 22 11月 10 11:47 php-5.6.27 -> /usr/local/bin/php-cgi* $ ls -l /home drwxrwxr-x 30 hoge hoge 4096 11月 10 11:43 hoge/ $ ls -l /home/hoge drwxr-xr-x 2 hoge hoge 4096 11月 10 11:47 php56/ drwxr-xr-x 2 hoge hoge 4096 11月 10 10:41 public_html/ $ ls -l /home/hoge/public_html -rw-r--r-- 1 hoge hoge 331 11月 10 10:41 whoami.php [httpd.conf] <IfModule alias_module>内に ScriptAlias /hoge-php/ "/home/hoge/php56" を追加しました。 UserDir public_html Action hoge-php56 /hoge-php/php-5.6.27 <Directory "/home/hoge/public_html"> Options Indexes FollowSymLinks ExecCGI AddHandler hoge-php56 .php .html Require all granted </Directory> ブラウザで閲覧すると http://xx.xx.xx.xx/~hoge/whoami.php forbidden You don't have permision to access /hoge-php/php-5.6.27/~hoge/whoami.php となります。 ScriptAlias, Action がよく理解できていませんので ご指導よろしくお願いします。

    • 締切済み
    • PHP
  • mod_perlとディレクトリ

    以下のhttpd.confでAliasをコメントアウトして、 http://localhost/a/にアクセスすると、 Perlの【$ENV{MOD_PERL}】の部分が【mod_perl/2.0.2】と表示されますが Alias / c:/usr/Apache2/VirtualHost/mylink-info/public_html/a/ を有効にして、 http://localhost/にアクセスすると、 Perlの【$ENV{MOD_PERL}】の部分が【】となり、どうもmod_perlで動作していないです。 そうかといって、 <Location /a>を<Location />として全体をmod_perlすると sample.htmlなど cgi以外が正しく動作しないので、困っています。 mod_perlで動作するのは特定のディレクトリ(例えば /cgi-bin)の下限定として、 アクセス時に http://localhost/のようにあたかもpublic_htmlの下にあるように動作したいです。 #Alias / c:/usr/Apache2/VirtualHost/mylink-info/public_html/a/ #=== conf/httpd.conf ( mod_perl 2.x ) <IfModule mod_perl.c> LoadFile "C:/usr/local/bin/perl58.dll" PerlRequire "C:/usr/Apache2/conf/startup.pl" <Location /a> PerlSendHeader On SetHandler perl-script PerlResponseHandler ModPerl::PerlRun #PerlHandler Apache::Registry Options +ExecCGI PerlOptions +ParseHeaders Allow from all </Location> </IfModule>

    • ベストアンサー
    • Perl