• 締切済み

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
  • 回答数1
  • ありがとう数0

みんなの回答

  • bara-s
  • ベストアンサー率0% (0/1)
回答No.1

/homeや/home/hogeのパーミッションが読み取り不可になっていませんか?

junh1109
質問者

補足

コメントありがとうございます。 Directory の所有者やパーミッションは以下の通りです。 755 root root /home 775 hoge hoge /home/hoge 755 hoge hoge /home/hoge/php56 755 hoge hoge /home/hoge/public_html ls -l /home/hoge/php56/ lrwxrwxrwx hoge hoge /home/hoge/php56/php-5.6.27 -> /usr/local/bin/php-cgi*

関連するQ&A

  • httpd.conf内ScriprAlias設定に関して

    何時もお世話になります。 現在APACHE2でCGIの設定をしております。 過去の質問などを色々と読んでおりますが、ScriptAliasの設定で判らない部分がございます。 一つのディレクトリ内のcgi-binでは動くのですが、複数のディレクトリで動かそうとすると、ソースが表示されてしまいます。 複数のディレクトリ内でそれぞれCGIを動かす為の設定はどの様にしたら宜しいのでしょうか・・・? 現在 ScriptAlias /cgi-bin/ "usr/local/apache2/cgi-bin/" <Directory "home/hoge1/cgi-bin/" Options +ExecCGI </Directory> <Directory "home/hoge2/cgi-bin/" Options +ExecCGI </Directory> となっております。 それぞれにScriptAliasのパスを書かないとダメ?と思い、 デフォルトを切って ScriptAlias /cgi-bin/ "/home/hoge1/cgi-bin/" ScriptAlias /cgi-bin/ "/home/hoge2/cgi-bin/" 等を付けたり切ったり、何度かパタンを試しましたが巧く行きません。 Aliasの考え方が間違って居るのでしょうか・・・? ご指導の程、お願い申し上げます。

  • CGI版PHP?

    よろしくお願いします 現在ローカルで Windows2000+Apache2+php4のPHPの実行可能環境を構築しています ところが、現在使用しているサーバーの1つが CGI版PHPというのかどうかわかりませんが 拡張子を.cgiにして1行目に #!/usr/local/bin/php-cgi-4.3.11 などを書いてPHPを実行する方法をとっています これだと、ローカルで構築したあとに拡張子を変えて リンクを変えて・・・と面倒なので 拡張子がphpでもcgiでも実行できる環境を構築できないかと思い 質問させていただきました 参考になるホームページなどがありましたら教えていただけないでしょうか?

  • CGIスクリプト 保存用ディレクトリ

    ApacheというWWWサーバーでは、srm.confというファイル内に  ScriptAlias /cgi-bin/ /usr/local/www/cgi-bin/と記述し、かつaccess.confというファイル内に、 <Directory /usr/local/www/cgi-bin> </Directory> という記述を行うことで、/usr/local/www/cgi-bin/というディレクトリがそのCGIスクリプトの保存用ディレクトリになります。 と書いているのですが、どういうことかよくわかりません。srm.confというファイルはあらかじめ、パソコンにはいっているのでしょうか? ScriptAlias /cgi-bin/ /usr/local/www/cgi-bin/と記述しと書いているのですが、何で記述したらいいのでしょうか。 すいませんが、教えてください。

  • apacheのCGI設定

     pc9821にFreeBSD(98)をいれapache1.3を起動させています。cgiはlight.cgiというソフトをつかっています。なかなかcgiがうまくいきません。参考ページには public_html / index.html (トップページ) | +-- bbs / light.cgi [755] | admin.cgi [755] ・・・・(省略) +-- lock [777] / | +-- past [777] / 0001.cgi [666] とかかれていますが、実際に私のサーバーにはpublic_htmlというフォルダは存在していなくて /usr/local/www/cgi-binにbbsというフォルダをつくり あとは上のようにしています。またindex.htmlは/usr/local/www/dataのなかにいれて表示してWebサーバーとしてはたらいています。またapacheの/usr/local/etc/apacheのhttpd.confは 関係ありそうな行だけあげると ServerRoot "/usr/local" DocumentRoot "/usr/local/www/cgi-bin" <Directory "/usr/local/www/cgi-bin/bbs"> Options Indexes FollowSymLinks MultiViews <location "/cgi-bin/"> Options ExecCGI AllowOverride AuthConfig Limit Order allow ,deny Allow from all </Location> <IfModule mod_mime.c> TypesConfig /usr/local/etc/apache/mime.types ADDHandler cgi-script .cgi </IfModule> ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin/" <Directory "/usr/local/www/cgi-bin/bbs"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> AddHandler cgi-script .cgi どこがおかしいのかおしえていただけないでしょうか?

    • ベストアンサー
    • CGI
  • cgi実行ディレクトリをデフォルト以外に追加設定する方法

    apacheのcgi-bin/のディレクトリはデフォルトだと、 DIR: /usr/local/apache/cgi-bin/ に設定されていると思います。 さらに実行出来るディレクトリを追加してあげる場合 httpd.confのScriptAliasを 手順的に追加するだけで出来るのでしょうか? 例 ScriptAlias /cgi-bin/testdir/ "/home/test/testdir/" <Directory "/home/test/testdir"> Options +ExecCGI </Directory>

  • cgi-binでPHP動作しない

    過去に何度か出ている質問ですが、 VineLinux3.1 + Apache1.3 + PHP4の環境でhttpサーバを構築したいのですが、 /home/httpd/cgi-bin/test.php  (中には <?php phpinfo(); ?> を記述) のスクリプトがブラウザより動作しません。 同ファイルを /home/httpd/html/test.php にコピー しアクセスすると正常に動作します。 どこか設定がおかしいのでしょうか? ■errot-log [Sun Jan 8 13:44:57 2006] [error] (8)Exec format error: exec of /home/httpd/cgi-bin/test.php failed [Sun Jan 8 13:44:57 2006] [error] [client 192.168.0.5] Premature end of script headers: /home/httpd/cgi-bin/test.php ■httpd.conf抜粋 <IfDefine HAVE_PHP4> LoadModule php4_module modules/libphp4.so </IfDefine> ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/ AddDefaultCharset off <IfModule mod_php4.c> AddType application/x-httpd-php .php4 .php3 .phtml .php AddType application/x-httpd-php-source .phps </IfModule>

  • PHPのCGIモードとについて

    PHPのCGIモードとについて PHPのCGIモードというのがよく分かりません。 自分はcentOSにソースコードからPHPを入れております。 で、主にApacheと連携させています。 ただ、最近は #!/usr/local/bin/php -q などを最初に書いてコマンドラインからの使用が多くなっております。 自分は ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-freetype-dir=/usr/local/lib --with-gd --with-mysqli=/usr/local/mysql5.5/bin/mysql_config --with-pdo-mysql=/usr/local/mysql5.5 --with-mysql-sock=/var/lib/mysql/mysql.sock --with-zlib --with-xsl=/usr/lib --enable-mbregex --enable-mbstring --enable-bcmath --with-mcrypt --disable-posix-threads --enable-bcmath --with-readline --with-curl=/usr/local/curl --with-curlwrappers --with-openssl --with-openssl-dir=/usr/lib64/openssl --enable-pcntl のようにしているのですが、これでCGIモードにはなっているのでしょうか? いまいち概念が掴めないでおります。 具体的な事例や、CGIモードでない場合との違いなどを教えていただけないでしょうか? また、CGIモードにするために何かphp.ini等で設定をするような事があるのであれば、 どのようにしてCGIモードとして使えるようになるのかをアドバイスいただきたいと思います。

    • ベストアンサー
    • PHP
  • gooのフリーHPでCGIをどこに置けば動作するのですか?

    ご覧いただきありがとうございます。オギハラと申します。 さて,gooのフリーHPでCGIをどこに置けば動作するのですか教えてください。 ちなみにデータ等は,ftp://xx@user01.goo.ne.jp/public_html/に置いております。 perlは,#!/usr/local/bin/perlで始めております。 お忙しいところ申し訳ありませんが,ご教授下さい。お願いいたします。

    • ベストアンサー
    • CGI
  • apacheの設定

    apacheの設定で ScriptAlias /cgi-bin /usr/local/apache/www/cgi-bin の箇所でCGI以外も利用するにはどのように記述すればよいでしょうか?HTMLの拡張子も利用したいのでお願いします。

  • ローカルでのCGIの動作させるために

    ローカルでCGIを作動させるためにApacheとActivePerlをインストールしましたが、他の質問で activePerlは、/usr/local/bin にインストール  別途ドライブが用意できるか、パーテショニングツールで独立したドライブが良い--たとえばE:\usr\local\bin apacheは、/usr/localにインストール  ---たとえば、E:\usr\local とあったのですが、このようにしたほうが良いのでしょうか? 現在は、cドライブにインストールし http://pckida.hp.infoseek.co.jp/srv/index.html を参考にApacheの設定をしてみたのですが、うまくいきませんでした。 間違っている箇所や注意しなければならない点などありましたら指摘お願いします。 使用したのは Windows7 Ultimate Apache HTTP Server 2.2.15 ActivePerl-5.10.1.1007 です。 以上よろしくお願いします。

    • ベストアンサー
    • CGI

専門家に質問してみよう