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

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

ただいまの
回答率

87.48%

nginxでphpを動かしたい

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,818

score 29

▼やりたいこと
nginxでphpを動かしたい。

▼環境
Vagrantでバーチャルサーバー構築
Ubuntu16.04
Nginx1.10.1
PHP 7.0
PHP-FPM 7.0

▼nginxの設定
/etc/nginx/conf.d/default.conf

server {
    listen       80;
    server_name  192.168.33.10;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    root   /var/www/html;
    index  index.php index.html index.htm;

    location / {
      try_files $uri $uri/ =404;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /var/www/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
    #    root           /var/www/html;
        fastcgi_pass   unix:/run/php/php7.0-fpm.sock;
    #    fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
    #     fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}

▼nginxエラーログ

2016/10/08 13:50:49 [error] 21977#21977: *1 open() "/var/www/html/50x.html" failed (2: No such file or directory), client: 192.168.33.1, server: 192.168.33.10, request: "GET /info.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock", host: "192.168.33.10"

▼index.phpの置き場所は以下
/var/www/html/index/php
index.phpはuser,groupともにwww-data

問題なく表示されるindex.htmlもwww-data:www-data

-rwxr-xr-x 1 www-data www-data 537 May 31 14:16 50.html
-rwxr-xr-x 1 www-data www-data 612 May 31 14:16 index.html
-rwxr-xr-x 1 www-data www-data  18 Oct  8 12:22 index.php
-rwxr-xr-x 1 www-data www-data   6 Oct  8 12:06 info.php

phpはどうすれば表示されますでしょうか。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

0

ほとんど同じような構成で動いていますよ
自分はmanzyunさんのご指摘のとおり、/etc/nginx/sites-available/defaultを修正する方法でやっています。以下自分の設定です。参考にしてください。
※もう記憶があいまいですが、コメントを外したぐらいしかやらなかったような...

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    # SSL configuration
    #
    # listen 443 ssl default_server;
    # listen [::]:443 ssl default_server;
    #
    # Note: You should disable gzip for SSL traffic.
    # See: https://bugs.debian.org/773332
    #
    # Read up on ssl_ciphers to ensure a secure configuration.
    # See: https://bugs.debian.org/765782
    #
    # Self signed certs generated by the ssl-cert package
    # Don't use them in a production server!
    #
    # include snippets/snakeoil.conf;

    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.php index.nginx-debian.html;

    server_name _;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;

        # With php7.0-cgi alone:
        # fastcgi_pass 127.0.0.1:9000;
        # With php7.0-fpm:
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny all;
    }
}

(追記)

/etc/nginx/snippets/fastcgi-php.conf

# regex to split $uri to $fastcgi_script_name and $fastcgi_path
fastcgi_split_path_info ^(.+\.php)(/.+)$;

# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;

# Bypass the fact that try_files resets $fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;

fastcgi_index index.php;
include fastcgi.conf;

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/10/09 18:23

    snippets/fastcgi-php.conf;

    これ、私の環境では、snippets/fastcgi-php.conf
    ってのが存在しないのですが、
    nginxのインストールやphp-fpmのインストールなどどのように環境を構築したら生成されるのでしょうか?
    sites-availableも入っておらずです

    キャンセル

  • 2016/10/09 18:45 編集

    nginx-commonパッケージをインストールすると入るようです。

    キャンセル

  • 2016/10/10 13:22

    自分の場合ですと、nginxの公式リポジトリを追加し、nginxをaptでインストールしました。

    その際にphp-fpmのインストールのし忘れでPHPが動かなかったので、こちらもaptでphp-fpmをインストールして動作しました。
    この際にインストールされるphp-fpmのバージョンは7なので、fastcgi_passの値は、質問に掲載されている設定で大丈夫だと思います。

    キャンセル

  • 2016/10/10 13:37 編集

    なるほど! それだと自分もnginxの基本的な設定は理解できていないので、よくわからないです。すみません...。
    参考に/etc/nginx/snippets/fastcgi-php.confの内容を貼っておきます...

    キャンセル

0

まずエラーメッセージを見て素直に思ったのが

error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /var/www/html;
    }


この設定のせいでBatgatewayも表示されていないのではないかと思います。

続いて、念の為以下コマンドでnginxの設定ファイルに間違いがないか確認しましょう。

# nginx -t

問題なければ以下のように返答が返ってきます。

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

とりあえずコレで動作しますでしょうか?


P.S.

Ubuntu(Xenial(16.04))の場合、sites-enabledのdefault設定を書き換える方法の方がすんなり行く気がしました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/10/09 14:01

    bad gatewayは表示されるようになりました。
    が、相変わらずPHPは動いておらずです。。。
    何が原因なのでしょうか。。。。

    キャンセル

  • 2016/10/10 13:19

    見当はずれかもしれませんが、

    server{ 項目の index のパラメーターに「index.php」を追加してみてはいかがでしょうか?

    キャンセル

0

パーミッション周りの可能性が高そうです。こちらが参考になると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 87.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る