質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

18802閲覧

phpを実行しようとすると、nginx上でAccess deniedになる

tixure55

総合スコア400

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2015/12/11 16:05

編集2015/12/12 12:33

phpを実行しようとすると、nginx上でAccess deniedになります。いろいろ検索すると、default.confの設定を見直しなさいというのがたくさん出てきたのですが、どれを試してもアクセス拒否になってしまいます。
どのあたりを改善すべきでしょうか?

/etc/nginx/conf.d/default.conf↓

php

1server { 2 listen 8001 default_server; 3 root /usr/share/nginx/html; 4 index index.html index.htm; 5 server_name localhost; 6 7 location / { 8# First attempt to serve request as file, then 9# as directory, then fall back to displaying a 404. 10 try_files $uri $uri/ /index.html; 11# Uncomment to enable naxsi on this location 12# include /etc/nginx/naxsi.rules 13 } 14 15 location /doc/ { 16 alias /usr/share/doc/; 17 autoindex on; 18 allow 127.0.0.1; 19 allow ::1; 20 deny all; 21 } 22 23 error_page 500 502 503 504 /50x.html; 24 location = /50x.html { 25 root /usr/share/nginx/html; 26 } 27 28 location ~ \.php$ { 29 try_files $uri =404; 30 fastcgi_split_path_info ^(.+\.php)(/.+)$; 31# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini 32 33# With php5-cgi alone: 34#fastcgi_pass 127.0.0.1:9000; 35# With php5-fpm: 36fastcgi_pass unix:/var/run/php5-fpm.sock; 37 fastcgi_index index.php; 38 include fastcgi_params; 39 fastcgi_param PATH_INFO $fastcgi_path_info; 40 fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; 41 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 42 } 43 location ~ /\.ht { 44 deny all; 45 } 46} 47

なお、ディストリビューションはUbuntu14.04で、php5-fpmは起動しており、実行しようとしているphpファイルの実行権限は755です。/usr/share/nginx/html上のhmtlファイルはブラウザ上で実行できております。

/etc/php5/fpm/php.ini↓

gi.fix_pathinfo=0

/var/log/nginx/error.log↓

FastCGI sent in stderr: "Access to the script '/usr/share/nginx/html' has been denied (se e security.limit_extensions)" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /h ello.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "localhost:8001"

追記:/etc/php5/fpm/pool.d/www.conf

PHP

1user = www-data↲ 2group = www-data↲ 3listen = /var/run/php5-fpm.sock↲ 4pm = dynamic↲ 5pm.max_children = 56pm.start_servers = 27pm.min_spare_servers = 18pm.max_spare_servers = 39

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TaichiYanagiya

2015/12/12 06:10

「fastcgi_split_path_info ^(.+\.php)(/.+)$;」の設定がありますが、URL のパスは「/foo.php/bar」のような形式になるのでしょうか? 具体的な URL を教えてください。
tixure55

2015/12/12 12:37

回答ありがとうございます、具体的には、localhost:8001/foo.phpのような形になります。
guest

回答2

0

ベストアンサー

/etc/php5/fpm/pool.d/www.conf の設定を教えてください。

例えば、

www.conf

1;listen = /var/run/php5-fpm.sock 2listen = 127.0.0.1:9000

※unix socketではく、ネットワークバインドしています。

あと、/etc/nginx/sites-enabled/defaultの php を呼び出す部分を教えてください。

例えば、

server { listen 8001; server_name default_server; root /usr/share/nginx/html; index index.php index.html index.htm; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; include fastcgi_params; } }

※ index の index.phpは忘れがち。

投稿2015/12/12 01:43

編集2015/12/12 01:44
Ken.sakanakana

総合スコア1768

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tixure55

2015/12/12 12:34

/etc/nginx/sites-enabled/defaultを上記のように設置してみましたが、変わらないようです。www.confを追記しましたので、ご助言いただけますでしょうか?
Ken.sakanakana

2015/12/13 02:36

/etc/php5/fpm/php-fpm.conf で、 --- include=/etc/php5/fpm/pool.d/*.conf --- という指定がある事と、 /etc/php5/fpm/pool.d/www.conf で、 --- ;security.limit_extensions = .php .php3 .php4 .php5 security.limit_extensions = .php .html --- 以下のようになっている事をご確認くださいませ。 あと、設定を変更された場合は、デーモンの再起動をしてください。
tixure55

2015/12/14 22:14

回答遅くなって申し訳ありません。おっしゃる点を確認しましたが、両方ともそうなっていますが、access deniedになってしまいます。他に心当たりございますでしょうか?
tixure55

2015/12/14 22:21

security.limit_extensions = .php .htmlの行の次の行に半角文字が入っていてそれが原因だったようです。無事動きました。ありがとうございました。
guest

0

Ken.sakanakana さんの回答のとおり、
security.limit_extensions に ".php" が含まれていないためだと思います。
security.limit_extensions が未定義の場合はデフォルトで ".php" となるはずですが、php-fpm のバージョンによって違うのかもしれません。

アクセスする URL の情報ありがとうございます。
「fastcgi_split_path_info ^(.+.php)(/.+)$;」の設定があるので、".php" 以外で php-fpm に渡っているのではないかと推測していました。
".php" でアクセスするのであれば、fastcgi_split_path_info の設定は必要ないと思います。

投稿2015/12/13 07:59

TaichiYanagiya

総合スコア12141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問