ホームページ 運用・保守 Nginx nginxがphp-fpmを呼び出すときのエラーを解決する方法

nginxがphp-fpmを呼び出すときのエラーを解決する方法

May 14, 2023 am 10:25 AM
php-fpm nginx

nginx と php-5.5 をインストールし、php を呼び出すように nginx を設定した後、php-fpm を起動します。

次のコマンドを使用します

コードをコピーしますコードは次のとおりです:

/usr/local/php/sbin/php-fpm

それで始まりました。

nginx ディレクトリに PHP 検出スクリプト Index.php を作成します。

その結果、http://localhost/index.php

を開くと、悲劇的な発見が行われます。開けられません。ログ ファイルを確認して、エラーの理由を確認してください。

コードをコピーします。コードは次のとおりです。

2013/07/01 22:34:26 [エラー] 3214#0 : *64 fastcgi が標準エラー出力で送信されました:「プライマリ スクリプトが不明です」、アップストリームからの応答ヘッダーの読み取り中に、クライアント: 192.168.168.19、サーバー: localhost、リクエスト: "get /index.php http/1.1"、アップストリーム: "fastcgi:// 127.0.0.1:9000 "、ホスト: "192.168.168.140"

ポートを確認してください。 php-fpm の 9000 番ポートが開いていることから、php-fpm には問題はなく、nginx に問題があることがわかります。もしかしたら私の設定ファイルに何か問題があるのか​​もしれません。

nginx が php 設定をロードする部分を見つけます。オンラインの nginx 設定ファイルも参照してください。

69 行目に呼び出しスクリプトのパスがあります。

コードをコピーします。コードは次のとおりです。

fastcgi_param script_filename /scripts$fastcgi_script_name;

パスを以下に変更するだけです。

コードをコピーします。コードは次のとおりです。

fastcgi_param script_filename $document_root$fastcgi_script_name;

http://localhost/index.php

phpのバージョン情報が表示されます。
以下の設定方法も参照できます

php-fpm は、lighttpd の spawn-fcgi などの他の fastcgi ランチャーに依存する必要がなくなりました。
php-fpm は非常に使いやすく、設定は php-fpm.ini ファイルにあります。
起動と再起動は php/sbin/php-fpm から行うことができます。
さらに便利なのは、php の後に変更することです。 ini をロードするには、php-fpm reload を直接使用できます。プロセスを強制終了せずに、php.ini の変更とロードを完了できます。
結果は、php-fpm を使用すると、php のパフォーマンスが大幅に向上することを示しています
php-fpm 制御されたプロセスの CPU リサイクル速度は比較的遅いです。メモリ割り当ては非常に均一です。
spawn-cgi によって制御されるプロセスの CPU はすぐに低下します。メモリ割り当ては比較的不均一です。
割り当てられていないように見えるプロセスが多数ありますが、他のプロセスは非常に多くの量を占有しています。
プロセスのタスクが不均等に分散されていることが原因である可能性があります。これは、全体的な応答速度の低下にもつながります。
そして、php- fpm の適切な割り当ては、全体的な応答と平均タスクの改善につながります。
php-fpm を使用するには、php ソース コードにパッチを適用し、php

1 を再コンパイルする必要があります。php-fpm
wget http をダウンロードします。 ://cn.php.net/get/php-5.2.8.tar.gz/from/www.php.net/mirror
wget http://php-fpm.anight.org/downloads/head/ php-5.2.8-fpm-0.5 .10.diff.gz
php-5.2.9
gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | と同じディレクトリにあります。 patch -d php-5.2.9 - p1
パッチが適用された後、php のコンパイル時に次のパラメータが追加されます。
–enable-fpm は fastcgi モードの fpm サポートを有効にします
–with-fpm-conf php -fpm 設定ファイル (デフォルトは prefix/etc/php-fpm.conf)
–with-fpm-log php-fpm のログ ファイル (デフォルトは prefix/logs/php-fpm.log)
–with -fpm-pid php- fpm の pid ファイル (デフォルトは prefix/logs/php-fpm.pid)
./configure --prefix=/ebs/php \
--with-config-file-path= /ebs/php/ etc \
--enable-fastcgi \
--enable-fpm \
--others
注: --enable-fastcgi \ は -- の前にある必要がありますEnable-fpm \、そうでない場合は、fpm をコンパイルできません。

2.php をコンパイルした後、設定ファイルを変更します
vi /ebs/php/etc/php-fpm.conf
次の設定に注意する必要があります
127.0.0.1:9000
これは、PHP の fastcgi プロセスがリッスンする IP アドレスとポートを表します。
nobody
< ;value name="group">nobody
PHP fastcgi プロセスがどのユーザーおよびユーザー グループとして実行されるかを示します。デフォルトでは、この行はコメントアウトされているため、オンにする必要があります
0
PHP エラー メッセージを表示するかどうか
5
子の最大数プロセス
php-fpm の実行 :
php-fpm は、fastcgi プロセスを制御するプログラムを使用します。このファイルは、$prefix/sbin/php-fpm
/usr/local/php/sbin/php- にあります。 fpm
プログラムには次のパラメータがあります。
start php の fastcgi プロセスを開始します。
stop php の fastcgi プロセスを強制的に終了します。
quit php の fastcgi プロセスをスムーズに終了します。
restart fastcgi を再起動します。 php のプロセス
reload php の php.ini を再ロードします。 ##logrotate ログ ファイルを再度有効にします。
つまり、php.ini を変更した後、
/usr/local/php/sbin を使用できます。 /php-fpm reload
このようにして、php の fastcgi プロセスが実行され続ける間、php.ini がリロードされます。

コードをコピーします。コードは次のとおりです:

user www www;
worker_processes 10;
error_log logs/error.log Notice;
pid logs/nginx.pid;
#で開くことができる最大ファイル記述子の値を指定しますこのプロセス。
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 51200;
}
http
{
include mime.types;
default_type application/octet-stream;
charset gb2312;
server_names_hash_bucket_size 128;
#sendfile on;
#tcp_nopush on;
keepalive_timeout 60;
tcp_nolay on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 8k;
gzip_http_version 1.1;
gzip_types text/plain application/x-javascript text/css text/html application/xml;
{
listen 80;
server_name 192.168.1.2;
indexindex.htmlindex.htmindex.php;
root /ebs/www;
if (-d $request_filename)
{
書き換え ^/(.*)([^/])$ http://$host/$1$2/ Permanent;
}
location ~ .*\.php?$
{
include fcgi.conf

fastcgi_pass 127.0.0.1:9000;
fastcgi_indexindex.php;
}
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log logs/access.log access;
}
}

新しい構成文件

复制定代次:

/usr/local/nginx/conf/fcgi.conf

注:nginx自带了1 つの構成ファイル、/usr/local/nginx/conf/fastcgi_params、この構成ファイルは粗い文字の部分を省略しており、php ファイルのタイムアウト時に 404 エラーが発生する可能性があります。 #fastcgi_param ゲートウェイ インターフェイス cgi/1.1;

fastcgi_param サーバー_ソフトウェア nginx;

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_filename $document_root$fastcgi_script_name;
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;
fastcgi_param php のみ、php がビルドされた場合に必要です - -enable-force-cgi-redirect
#fastcgi_param redirect_status 200;


四 配置xcache
1、xcacheモジュールのインストール
wgethttp://xcache.lighttpd.net/pub /releases/1.2.2/xcache-1.2.2.tar.gz
tar -xvzf xcache-1.2.2.tar.gz
cd xcache-1.2.2
/usr/local/php/ bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --enable-xcache --enable-xcache-optimizer
make

make install

2、暗号暗号の計算 md5
echo -n "password"|md5sum
5f4dcc3b5aa765d61d8327deb882cf99
3、構成xcache
;注:zend_extension、ダウンロードzend の拡張、绝对路径、extension は、extension_dir の相対パスであり、zend 拡張以外の
後でパスを変更した場合は、restart ではなく、必ず apachectl stop 後に再起動する必要があります。
vi /usr/local/php/etc/ php.ini

追加:

复制代コード如下:

[xcache-common]
zend_extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so
[xcache.admin]
;將 xcache.admin.user 變更為您首選的登入名稱
xcache.admin.user = "admin"
;將 xcache.admin.pass 更改為您的密碼的 md5 指紋
;使用 md5 -s "your_secret_password" 找出指紋
xcache.admin.pass = "5f4dcc3b5aa765d61d8327deb882cf99"
[xcache]
;更改 xcache.size 來調整操作碼快取的大小
xcache.size = 24m
xcache.shm_scheme = "mmap"
xcache.count = 2
xcache.slots = 8k
xcache . ttl = 0
xcache.gc_interval = 0
;更改xcache.var_size來調整變數快取的大小
xcache.var_size = 8m
xcache.var_count = 1
xcache.var_slots = 8k
xcache.var_ttl = 0
xcache.var_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_max
xcache.var_gc_interval = 300
xcache.test = 關閉
xcache.readonly_protection = on
xcache.mmap_path = "/tmp/xcache"
xcache.coredump_directory = ""## xcache .cacher = on
xcache.stat = on
xcache.optimizer = off
[xcache.coverager]
xcache.coverager = on
xcache.coveragedump_dicache.coverager]
xcache.coverager = on
xcache.coveragedump_directory = ""

##5、重啟php模組
正常載入之後,
在phpinfo顯出的資訊內
zend這快應該會加上xcache的內容
nginxがphp-fpmを呼び出すときのエラーを解決する方法

6、另外兩個加速模組:
在我們的測試中,效果都會好於xcache,這3中加速不能同時存在兩種,有衝突。
6.1 apc

複製程式碼程式碼如下:

wget http://pecl.php.net/get/apc-3.0.19.tgz
cd apc-3.0.19
/usr/local/ php /bin/phpize
./configure --enable-apc --enable-apc-mmap --with-apxs=/ebs/apache/bin/apxs --with-php-config=/ebs/php/ bin /php-config
make
make install
6.2 eaccelerator
wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.zip
cd eaccelerator -0.9.5.3
/usr/local/php/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/ebs/php/bin/php-config
make##make install
#vi php.ini
#zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1 "
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

##五、使用nginx對應多台facgi伺服器

思路:前端一個nginx,用於做負載平衡和處理靜態頁面。利用nginx的上游模組來將php請求分發到後段的php-fpm伺服器上。
頭部多台php-fpm的伺服器,只起php-fpm服務來處理php。
這樣做減少了php-fpm上的nginx服務,相當於少了一層。

以上がnginxがphp-fpmを呼び出すときのエラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Nginxが開始されるかどうかを確認する方法 Nginxが開始されるかどうかを確認する方法 Apr 14, 2025 pm 01:03 PM

nginxが開始されるかどうかを確認する方法:1。コマンドラインを使用します:SystemCTLステータスnginx(Linux/unix)、netstat -ano | FindStr 80(Windows); 2。ポート80が開いているかどうかを確認します。 3.システムログのnginx起動メッセージを確認します。 4. Nagios、Zabbix、Icingaなどのサードパーティツールを使用します。

Linuxでnginxを開始する方法 Linuxでnginxを開始する方法 Apr 14, 2025 pm 12:51 PM

Linuxでnginxを開始する手順:nginxがインストールされているかどうかを確認します。 systemctlを使用して、nginxを開始してnginxサービスを開始します。 SystemCTLを使用して、NGINXがシステムスタートアップでNGINXの自動起動を有効にすることができます。 SystemCTLステータスNGINXを使用して、スタートアップが成功していることを確認します。 Webブラウザのhttp:// localhostにアクセスして、デフォルトのウェルカムページを表示します。

Nginxが起動されているかどうかを確認する方法は? Nginxが起動されているかどうかを確認する方法は? Apr 14, 2025 pm 12:48 PM

Linuxでは、次のコマンドを使用して、nginxが起動されるかどうかを確認します。SystemCTLステータスNGINXコマンド出力に基づいて、「アクティブ:アクティブ(実行)」が表示された場合、NGINXが開始されます。 「アクティブ:非アクティブ(dead)」が表示されると、nginxが停止します。

Windowsでnginxを構成する方法 Windowsでnginxを構成する方法 Apr 14, 2025 pm 12:57 PM

Windowsでnginxを構成する方法は? nginxをインストールし、仮想ホスト構成を作成します。メイン構成ファイルを変更し、仮想ホスト構成を含めます。 nginxを起動またはリロードします。構成をテストし、Webサイトを表示します。 SSLを選択的に有効にし、SSL証明書を構成します。ファイアウォールを選択的に設定して、ポート80および443のトラフィックを許可します。

nginx403を解く方法 nginx403を解く方法 Apr 14, 2025 am 10:33 AM

Nginx 403禁止エラーを修正する方法は?ファイルまたはディレクトリの許可を確認します。 2。HTACCESSファイルを確認します。 3. nginx構成ファイルを確認します。 4。nginxを再起動します。他の考えられる原因には、ファイアウォールルール、Selinux設定、またはアプリケーションの問題が含まれます。

nginxサーバーを開始する方法 nginxサーバーを開始する方法 Apr 14, 2025 pm 12:27 PM

NGINXサーバーを起動するには、異なるオペレーティングシステムに従って異なる手順が必要です。Linux/UNIXシステム:NGINXパッケージをインストールします(たとえば、APT-GetまたはYumを使用)。 SystemCtlを使用して、NGINXサービスを開始します(たとえば、Sudo SystemCtl Start NGinx)。 Windowsシステム:Windowsバイナリファイルをダウンロードしてインストールします。 nginx.exe実行可能ファイルを使用してnginxを開始します(たとえば、nginx.exe -c conf \ nginx.conf)。どのオペレーティングシステムを使用しても、サーバーIPにアクセスできます

Nginxクロスドメインの問題を解決する方法 Nginxクロスドメインの問題を解決する方法 Apr 14, 2025 am 10:15 AM

Nginxクロスドメインの問題を解決するには2つの方法があります。クロスドメイン応答ヘッダーの変更:ディレクティブを追加して、クロスドメイン要求を許可し、許可されたメソッドとヘッダーを指定し、キャッシュ時間を設定します。 CORSモジュールを使用します。モジュールを有効にし、CORSルールを構成して、ドメインクロスリクエスト、メソッド、ヘッダー、キャッシュ時間を許可します。

nginxの実行ステータスを確認する方法 nginxの実行ステータスを確認する方法 Apr 14, 2025 am 11:48 AM

nginxの実行ステータスを表示する方法は次のとおりです。PSコマンドを使用してプロセスステータスを表示します。 nginx configuration file /etc/nginx/nginx.confを表示します。 NGINXステータスモジュールを使用して、ステータスエンドポイントを有効にします。 Prometheus、Zabbix、Nagiosなどの監視ツールを使用します。

See all articles