2016-07-11 1 views
1

AWS EC2インスタンスでは、php7.0とnginxを使用してWeb環境を作成します。 これにより、404ページのエラーが発生します。php7.0 + nginxは404ページエラーを起こします

HTML拡張ページはうまく動作しますが、PHPでは動作しません。

は、default.conf fastcgi_params

fastcgi_param QUERY_STRING  $query_string; 
fastcgi_param REQUEST_METHOD  $request_method; 
fastcgi_param CONTENT_TYPE  $content_type; 
fastcgi_param CONTENT_LENGTH  $content_length; 

fastcgi_param SCRIPT_NAME  $fastcgi_script_name; 
fastcgi_param REQUEST_URI  $request_uri; 
fastcgi_param DOCUMENT_URI  $document_uri; 
fastcgi_param DOCUMENT_ROOT  $document_root; 
fastcgi_param SERVER_PROTOCOL $server_protocol; 
fastcgi_param REQUEST_SCHEME  $scheme; 
fastcgi_param HTTPS    $https if_not_empty; 

fastcgi_param GATEWAY_INTERFACE CGI/1.1; 
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; 

fastcgi_param REMOTE_ADDR  $remote_addr; 
fastcgi_param REMOTE_PORT  $remote_port; 
fastcgi_param SERVER_ADDR  $server_addr; 
fastcgi_param SERVER_PORT  $server_port; 
fastcgi_param SERVER_NAME  $server_name; 

# PHP only, required if PHP was built with --enable-force-cgi-redirect 
fastcgi_param REDIRECT_STATUS 200; 

server { 
listen  80; 
server_name localhost; 

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

location/{ 
    root /var/www; 
    index index.php index.html index.htm; 
} 

#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/error; 
} 

# 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; 
    fastcgi_intercept_errors on; 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME /scripts$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.confに

user www-data; 
worker_processes 1; 

error_log /var/log/nginx/error.log warn; 
pid  /var/run/nginx.pid; 


events { 
    worker_connections 1024; 
} 


http { 
    include  /etc/nginx/mime.types; 
    default_type application/octet-stream; 

    log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
         '$status $body_bytes_sent "$http_referer" ' 
         '"$http_user_agent" "$http_x_forwarded_for"'; 

    access_log /var/log/nginx/access.log main; 

    sendfile  on; 
    #tcp_nopush  on; 

    keepalive_timeout 65; 

    #gzip on; 

    include /etc/nginx/conf.d/*.conf; 
} 

環境全体がnginxの+ php7.0 +ですマリアAWS EC2インスタンスのB。

私が間違っているものを見つけることができません...

+0

私の間違い。 fastcgi_paramの内容は fastcgi_param QUERY_STRING $ query_stringです。 fastcgi_param REQUEST_METHOD $ request_method; fastcgi_param CONTENT_TYPE $ content_type; fastcgi_param CONTENT_LENGTH $ content_length; fastcgi_param SCRIPT_NAME $ fastcgi_script_name; fastcgi_param REQUEST_URI $ request_uri; fastcgi_param DOCUMENT_URI $ document_uri; fastcgi_param DOCUMENT_ROOT $ document_root; fastcgi_param SERVER_PROTOCOL $ server_protocol; – OhHyeonJun

+0

fastcgi_param REQUEST_SCHEME $ scheme; fastcgi_param HTTPS $ https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$ nginx_version; fastcgi_param REMOTE_ADDR $ remote_addr; fastcgi_param REMOTE_PORT $ remote_port; fastcgi_param SERVER_ADDR $ server_addr; fastcgi_param SERVER_PORT $ server_port; fastcgi_param SERVER_NAME $ server_name; PHPは--enable-force-cgi-redirectを使用してPHPを構築した場合に必要です。 fastcgi_param REDIRECT_STATUS 200; – OhHyeonJun

+0

@リチャードスミスありがとう! fastcgi_paramsの部分を編集します。 – OhHyeonJun

答えて

0

私は答えとしてこれを投稿しますが、私はPHP7とAWSのEC2に慣れていませんよ。

nginxの設定に矛盾があるようです。

このブロック:

location/{ 
    root /var/www; 
    index index.php index.html index.htm; 
} 

ように、あなたのファイルは、例えば、/var/wwwの下に配置されているnginxを伝えます:

  • URI /index.html/var/www/index.html
  • URI /foo/bar.htmlで見つけることができますで見つけることができます/var/www/foo/bar.html

indexディレクティブは、index.phpなど(/var/www以下)も検索するように指示します(nginx)。ただし、.phpで終わるURIは、別の場所ブロックで処理されます。

ブロック:

location ~ \.php$ { 
    root /var/www; 
    fastcgi_intercept_errors on; 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 
    include  fastcgi_params; 
} 

.php URIを処理することを意図しています。現在、あなたのアーキテクチャが特別でない限り、SCRIPT_FILENAMEパラメータはファイルの場所をnginxからphpサブシステムに渡します。

  • URI /index.php/var/www/foo/bar.php

rootがあると仮定すると、で見つけることができURI /foo/bar.php/var/www/index.php

  • で見つけることができます。そして、ほとんどのシステム上で、$document_root$fastcgi_script_nameの値があることを意味している使用されています/var/wwwに設定します。お使いの設定ファイルで

    は、あなたがlocation ~ \.php$ブロックrootを設定し、それを使用していません。 rootディレクティブは、$document_rootの値を設定します。

    は、他の問題があるが、重要なのは(あなたは特別なアーキテクチャを使用していない限り)SCRIPT_FILENAMEの値があるべきであるということである:あなたが避けるために任意のfastcgi_paramディレクティブの前include fastcgi_params;を置くべき

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    

    インクルードされたファイルは、自動的に目的の値を上書きします。

  • 関連する問題