Maison  >  Article  >  Opération et maintenance  >  Comment résoudre l'erreur lorsque nginx appelle php-fpm

Comment résoudre l'erreur lorsque nginx appelle php-fpm

WBOY
WBOYavant
2023-05-14 10:25:05982parcourir

Après avoir installé nginx et php-5.5 et configuré nginx pour appeler php, démarrez php-fpm.

Utilisez la commande suivante

Copiez le code Le code est le suivant :

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

et vous pouvez le démarrer.

Créez un script de détection PHP index.php dans le répertoire nginx

Le résultat est que lors de l'ouverture de http://localhost/index.php

la tragédie est qu'il ne peut pas être ouvert. Vérifiez le fichier journal et voyez la raison de l'erreur

Copiez le code Le code est le suivant :

01/07/2013 22:34:26 [erreur] 3214#0 : *64 fastcgi envoyé dans stderr : " script principal inconnu" lors de la lecture de l'en-tête de réponse depuis l'amont, client : 192.168.168.19, serveur : localhost, requête : "get /index.php http/1.1", en amont : "fastcgi://127.0.0.1:9000", hôte : "192.168.168.140"

Vérifiez le port. Voyant que le port 9000 de php-fpm a été ouvert, cela signifie qu'il n'y a aucun problème avec php-fpm. Le problème vient de nginx. Il y a peut-être un problème avec mon fichier de configuration.

Trouvez la partie où nginx charge la configuration php. Reportez-vous également au fichier de configuration nginx en ligne.

Il y a un chemin de script appelant à la ligne 69

Copiez le code Le code est le suivant :

fastcgi_param script_filename /scripts$fastcgi_script_name;

J'ai modifié le chemin comme suit.

Copiez le code Le code est le suivant :

fastcgi_param script_filename $document_root$fastcgi_script_name;

http://localhost/index.php

Les informations de version de php peuvent apparaître.
Vous pouvez également vous référer à la méthode de configuration ci-dessous

php-fpm n'a plus besoin de s'appuyer sur d'autres lanceurs fastcgi, tels que spawn-fcgi de lighttpd.
php-fpm est très pratique à utiliser. La configuration est dans le fichier php-fpm.ini
Le démarrage et le redémarrage peuvent être effectués depuis php/sbin/php-fpm.
Ce qui est plus pratique, c'est que vous pouvez modifier directement php. ini. L'utilisation de php-fpm reload pour charger peut terminer la modification et le chargement de php.ini sans tuer le processus. Les résultats montrent que l'utilisation de php-fpm peut améliorer considérablement les performances de PHP. La vitesse de recyclage du processeur contrôlée par php. -fpm est relativement lent. .La mémoire est allouée de manière très uniforme
Le processeur du processus contrôlé par spawn-cgi diminue très rapidement et l'allocation de mémoire est relativement inégale.
De nombreux processus semblent non alloués, tandis que d'autres le sont. très occupé.
Cela peut être dû au processus Causé par la répartition inégale des tâches. Cela entraîne également une diminution de la vitesse de réponse globale
Et la répartition raisonnable de php-fpm conduit à mentionner une réponse globale et des tâches moyennes
Utiliser php. -fpm nécessite de patcher le code source PHP. Ensuite, recompilez php

1 Téléchargez 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
Dans le même répertoire que php-5.2.9
gzip - cd php-5.2.8-fpm -0.5.10.diff.gz | patch -d php-5.2.9 -p1
Une fois le patch appliqué, les paramètres suivants sont ajoutés lors de la compilation de php :
–enable-fpm active fpm prise en charge en mode fastcgi
–avec le fichier de configuration -fpm-conf php-fpm (la valeur par défaut est prefix/etc/php-fpm.conf)
–avec-fpm-log le fichier journal php-fpm (la valeur par défaut est prefix/logs/php- fpm.log)
–with-fpm-pid Le fichier pid de php-fpm (la valeur par défaut est prefix/logs/php-fpm.pid)
./configure --prefix=/ebs/php
--with-config-file- path=/ebs /php/etc
--enable-fastcgi
--enable-fpm
--others
Remarque : --enable-fastcgi doit être devant --enable-fpm, sinon fpm ne peut pas être compilé .

2. Après avoir compilé php, modifiez le fichier de configuration

vi /ebs/php/etc/php-fpm.conf

Vous devez faire attention aux configurations suivantes
127.0.0.1. :9000
Cela représente l'adresse IP et le port surveillés par le processus fastcgi de PHP
nobody
nobody> ;
signifie Sous quel utilisateur et groupe d'utilisateurs le processus fastcgi de PHP s'exécute-t-il ? Cette ligne est commentée par défaut et doit être activée
0
S'il faut afficher l'erreur PHP messages
5
Nombre maximum de processus enfants
Exécutez php-fpm :
php-fpm utilise un programme pour contrôler le processus fastcgi. Ce fichier se trouve dans $prefix/sbin. /php-fpm
/usr/ local/php/sbin/php-fpm
Ce programme a les paramètres suivants :
start démarre le processus fastcgi de php
stop termine de force le processus fastcgi de php
quit termine en douceur le processus fastcgi de php
restart redémarre le processus fastcgi de php
reload recharge le php.ini de php
logrotate réactive le fichier journal
En d'autres termes, après avoir modifié php.ini, nous pouvons utiliser
/usr/local/php/sbin/php- fpm reload
De cette façon, le fichier journal en php est conservé. Pendant que le processus fastcgi continue de s'exécuter, php.ini est rechargé.

Copier le code Le code est le suivant :

user www www;
worker_processes 10;
error_log logs/error.log notice;
pid logs/nginx.pid;
#spécifie la valeur du nombre maximal de descripteurs de fichiers pouvant être ouverts par ce processus.
worker_rlimit_nofile 51200;
events
{
   utiliser 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 activé ;
   keepalive_timeout 60 ;
   tcp_nodelay activé;
   gzip activé;
   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;
   {
   écoutez 80 ;
   nom_serveur 192.168.1.2;
   index index.html index.htm index.php;
   root /ebs/www;
   if (-d $request_filename)
   {
   réécrire ^/(.*)([^/])$ http : //$host/$1$2/ permanent;
   }
   location ~ .*.php?$
   {
   include fcgi.conf

   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.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;
}

}
































Nom du produit:

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

注:nginx自带了一个配置文Par exemple,/usr/local/nginx/conf/fastcgi_params,该配置La passerelle fastcgi_param_ interface cgi/1.1;

fastcgi_param server_software 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;🎜fast cgi_param document_root $document_root;🎜fastcgi_param server_protocol $server_protocol;🎜 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 uniquement, requis si php a été construit avec --enable-force-cgi-re direct🎜 #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扩展🎜如果你更改路径以后,一Utilisez apachectl stop et start, puis redémarrez.🎜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]
; remplacez xcache.admin.user par votre nom de connexion préféré
xcache.admin.user = "admin"
 ; remplacez xcache.admin.pass par l'empreinte md5 de votre mot de passe
 ; utilisez md5 -s "your_secret_password" pour trouver l'empreinte digitale
xcache.admin.pass = "5f4dcc3b5aa765d61d8327deb882cf99"
[xcache]
; changez xcache.size pour ajuster la taille du cache d'opcode
xcache.size = 24m
xcache.shm_scheme = "mmap"
xcache.count = 2
xcache.slots = 8k
xcache.ttl = 0
xcache.gc_interval = 0
; changez xcache.var_size pour ajuster la taille du cache variable
xcache.var_size = 8m
xcache.var_count = 1
xcache.var_slots = 8k
xcache.var_ttl = 0#🎜🎜 #xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = off
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_directory = ""


5、重启php模块

正常load之后,

在phpinfo显出的信息内#🎜 🎜#zend这快应该会加上xcache的内容



6、另外两种加速模块:Comment résoudre lerreur lorsque nginx appelle php-fpm在我们的测试中,效果都要好于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,用于做为负载均衡和处理静态页面。 La version en amont de nginx utilise php请求分发到后段的php-fpm .服务,相当于少了一层。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer