Webサイトをドロップレット(Digital Ocean)にインストールしています。 PHPを使用してNGINXを正しくインストールするための問題があります。私はチュートリアルをしました https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14 -04 しかし、いくつかの.phpファイルを実行しようとすると、ただダウンロードしています...たとえば... http://5.101.99.123/info.php
は動作していますが、メインのhttp://5.101.99.123
に移動するとダウンロード中ですindex.php:/
何か案が?
-rw-r--r-- 1 agitar_user www-data 418 Jul 31 18:27 index.php
-rw-r--r-- 1 agitar_user www-data 21 Aug 31 11:20 info.php
私の/ etc/nginx/sites-available/default
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/html;
index index.html index.htm index.php;
# Make site accessible from http://localhost/
server_name agitarycompartir.com;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location / {
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
...その他の "location"についてのコメント(#)
これを試して:
/etc/nginx/sites-available/default
を編集listen 80; ## listen for ipv4; this line is default and implied
listen [::]:80 default_server ipv6only=on; ## listen for ipv6
server_name
をそのままにする# Make site accessible (...)
server_name localhost;
index
行にindex.php
を追加しますroot /usr/share/nginx/www;
index index.php index.html index.htm;
location ~ \.php$ {}
のコメントを外します# pass the PHP scripts to FastCGI server listening on (...)
#
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
#fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
/etc/php5/fpm/php.ini
を編集して、cgi.fix_pathinfo
が0
に設定されていることを確認してくださいSudo service nginx restart && Sudo service php5-fpm restart
私は1週間前にLinuxを使い始めたばかりなので、ぜひこの手助けをしたいと思います。私はナノテキストエディタを使ってファイルを編集しています。持っていなければapt-get install nanoを実行してください。 Googleはそれをもっと知りたいのです。
Nginx Serverでphpファイルを実行するには、これを/ etc/nginx/sites-enabled/defaultに追加する必要があります。
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
私はブラウザのキャッシュを空にすることで解決された同様の問題を抱えていました(また別のブラウザではうまく働きました)。
nginx config/etc/nginx/sites-available/defaultまたは設定ファイルを更新します
php7を使っているならこれを使ってください
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
php5を使っているならこれを使ってください
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
詳細はこちら 詳細はこちら
私は同じ問題を抱えていました、そして答えのどれも問題を解決しませんでした。
私は走った:
Sudo nginx -t
/ etc/nginx/sites-available/defaultにある設定ファイルをテストします。
それは私にこれらのエラーを与えた:
nginx: [emerg] unexpected end of file, expecting "}" in /etc/nginx/sites-enabled/default:115
nginx: configuration file /etc/nginx/nginx.conf test failed
それで私は設定ファイルに行き、最後の行にありました
#}
私はコメントを外して、再度testコマンドを実行しました、そしてそれはうまくいきました
これは私のために働いた。
1)MyAppファイル
vi/etc/nginx/sites-available/myApp
server {
listen 80;
listen [::]:80;
root /var/www/myApp;
index index.php index.html index.htm;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
PHP5ユーザー
変化する
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
に
fastcgi_pass unix:/var/run/php5-fpm.sock;
2)cgi.fix_pathinfoを設定する
Cgi.fix_pathinfoを0に設定
ロケーション:
PHP5 /etc/php5/fpm/php.ini
PHP7 /etc/php/7.0/fpm/php.ini
3)サービスを再開します
FPM
php5 Sudo service php5-fpm restart
php7 Sudo service php7.0-fpm restart
NGINX
Sudo service nginx restart
私は上記の多くの解決策を見て、多くが私のために正しく働いていました、しかし、私は彼らがしていたことを理解しませんでした、そして、コードを単にコピーペーストすることを心配しました、特にfastcgi。だからここに私の2セントは、
Apacheのようなサーバには、PHPを解釈するためのサポートが組み込まれているので、CGIは必要ありません。
このDigital Oceanリンク は、FPMをインストールするための手順をうまく説明しています。Phpファイルの代わりにダウンロードされる問題を解決するために必要な手順を書いていません。他の答えは私見かなり良いので以来レンダリング。
提案された答えのどれかがはたらかない場合、これを試みて下さい:
listen = 127.0.0.1:9000;(delete all line contain listen= )
remove server block server{} (if exist) in block html{} because we use server{} in default (config file in etc/nginx/site-available) which was included in nginx.conf.
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; }
Sudo service nginx restart
service php5-fpm restart
/ usr/share/nginx/htmlにphpファイルを作成し、 "server_name/file_name.php"で実行します(server_nameは設定によって異なります。通常はlocalhost、file_name.phpは/ usr/share/nginxに作成されたファイルの名前です。/html).
Ubuntu 14.04を使用しています
私にとっては、以下のように/index.phpの最後に?$query_string
を追加するのに役立ちました。
location / {
try_files $uri $uri/ /index.php?$query_string;
}
上記の答えは、私が到達した解決策にはコメントしすぎたようです。これは私のファイルがどのように見えたかです:
/ etc/nginx/sites-available/default
location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
これが日曜日の午後にイライラしている何人かの人々に役立つことを願っています(c:
私は/etc/nginx/sites-available/default
を使用していませんでした私は別のサーバーブロック構成ファイル(example.comなど)を使用していました、そして私がこの問題を解決することができる唯一の方法はデフォルトサーバーブロック構成ファイルシンボリックリンクを削除することです。
$ rm /etc/nginx/sites-enabled/default
それからNginxをリロードします。
$ Sudo systemctl reload nginx
PHP 7で同じ問題を抱えている人のために、CentOS 7でnginxにphpファイルを正しく実行させるためにこれを行ったのは、同じ問題を抱えている人のためにここに投稿したものです。
この文書を Digital Ocean で順を追って説明します。
/etc/nginx/conf.d/default.conf
を開きます(デフォルトで、私はサイトを有効にも利用可能にもしていません、あなたはそれに応じて編集することができます)。
以下のようにlocation
パラメータを編集します。
default.conf:
location ~ \.php$ {
try_files $uri =404;
#fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
#instruct nginx execute php7 files instead download them :D
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
NginxとPHPサービスSudo systemctl restart php-fpm
とSudo systemctl restart nginx
を再起動します。
最後になりましたが最も重要なのは、ブラウザのキャッシュをクリアするか、incognito (Chrome)
やPrivate Browsing (Firefox)
などで実行することです。
この便利で幸せなコーディングを願っています
私の解決策は追加することでした
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
私のカスタム設定ファイル、例えばetc/nginx/sites-available/example.com.conf
へ
/etc/nginx/sites-available/default
に追加してもうまくいきませんでした。
私にとってはそれは次の行でした:fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_pass unix:/run/php5-fpm.sockです。
/ etc/nginx/sites-available/default内の.phpの場所のコメントを外します
Sudo vi/etc/nginx/sites-available/default:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
私はそれが問題をロードしていないCSSを持っているならそれが他のロケーションブロックの上にこのブロックを持っていることをそれが解決したのと同じ問題を抱えていた。私は自分のサイトで利用可能なconfファイルに追加しました。
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
だから、これは私の場合最後に犯人が書き換え規則として働いたものです
nginxの書き換え規則を次のように変更しました。
location /vendors { rewrite ^/vendors/?$ /vendors.php break; }
〜になる.
location /vendors { rewrite ^/vendors/?$ /vendors.php last; }
どうやらlastキーワードがなければ、リクエストは再開されず、.php
のロケーションセグメントにヒットすることはなく、単にダウンロードとして解釈されました -
他に何も助けにならない場合そしておそらく以前にinfo.phpテストファイルを使ってApache2をインストールしました。 localhostのApp Data(キャッシュ、cookie)をクリアするだけです。
nginx設定ファイルの拡張子が* .confであることを確認してください。
例:/etc/nginx/conf.d/myfoo.conf
私は同じ状況になりました。設定ファイルの名前をmyfooからmyfoo.confに変更した後、修正されました。名前を変更した後にnginxを再起動することを忘れないでください。
私はこの問題を解決しようと精神的に努力しようとしていました、私にとっての問題は、Cloudflareがphpファイルをキャッシュし、それをダウンロードさせ続けていたことです。
私にとっての修正はCloudflareのキャッシュを一掃することでした。
このコードで問題を解決しました(IPを変更します):
location / {
access_log off;
log_not_found off;
client_max_body_size 2000m;
client_body_buffer_size 512k;
proxy_buffering on;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
proxy_buffer_size 64k;
proxy_buffers 32 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_connect_timeout 300s;
proxy_http_version 1.1;
proxy_set_header Range "";
proxy_pass https://123.123.123.123:444;
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
まずブラウザで
Remove cache
する必要があります
次にターミナルを開き、以下のコマンドを実行します。
Sudo apt-get install php-gettext
Sudo nano /etc/nginx/sites-available/default
次に、default
ファイルに次のコードを追加します。
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
不一致があった場合は、ただ修正して次のコマンドで端末からNginxを再起動してください
Sudo systemctl restart nginx
その後、ブラウザにアクセスしてお楽しみください...
記録のために、私のphp-fpmが実行されていないことがわかり、service php7.2-fpm stop
で修正しました
Ubuntu 16.04で私にとってうまくいったこと、そしてphp7はこの行を削除していました
fastcgi_split_path_info ^(.+\.php)(/.+)$;
その後phpファイルのダウンロードを中止しました。