Maison >développement back-end >Problème PHP >Que dois-je faire si Mac Nginx n'analyse pas PHP ?

Que dois-je faire si Mac Nginx n'analyse pas PHP ?

藏色散人
藏色散人original
2021-07-23 10:02:022697parcourir

La solution pour mac nginx qui n'analyse pas php : 1. cp un nouveau fichier avec le nom correct ; 2. Exécutez la commande "php-fpm --fpm-config..." ; ;4. Tuez le processus de solution.

Que dois-je faire si Mac Nginx n'analyse pas PHP ?

L'environnement d'exploitation de cet article : système macOS10.15, version PHP7.1, ordinateur MacBook Air 2019

Que dois-je faire si mac nginx n'analyse pas php ?

Les pièges rencontrés par mac lors du déploiement de php sous nginx

Quelqu'un m'a demandé de l'aider à déployer un site Web, puis j'ai d'abord voulu le déboguer dans nginx local. Au début, lorsque j'ai ouvert la page, elle affichait 403. J'avais déjà vu cela. C'était un problème d'autorisation avec nginx. Après avoir modifié les autorisations, j'ai constaté que lorsque j'accédais à la page PHP, je la téléchargeais directement sans l'analyser. Je me suis souvenu que mon ordinateur n'avait peut-être pas d'environnement PHP, j'ai donc téléchargé PHP. Puis toujours le même problème. Bref, comme je ne connais pas très bien PHP (j'utilisais auparavant des logiciels comme xampp), j'ai mis du temps à le faire.

La première chose à comprendre est que nginx lui-même ne peut pas gérer PHP, il s'agit simplement d'un serveur Web. Lorsque le front-end demande PHP, nginx doit envoyer l'interface à l'interpréteur PHP pour traitement, puis renvoyer le résultat au serveur. l'extrémité avant. Généralement, nginx envoie la demande au processus de gestion fastcgi pour traitement. Tel que configuré dans nginx :

location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;#这里原来不是$document_root,搞得我很蒙,还好网上查到改好了,不然会报file not found
    include        fastcgi_params;
}

Donc, pour démarrer un fastcgi, php-fpm est utilisé ici. C'est un gestionnaire php fastcgi, utilisé uniquement pour le langage php (l'ancienne version de php doit télécharger php-fpm séparément, j'utilise php). -fpm l'intègre déjà).

Il y a beaucoup de questions bizarres ici.

  • La première exécution de php-fpm

échec : le fichier /private/etc/php-fpm.conf est introuvable,

Solution : mais il y a php-fpm.conf.default dans ce fichier de répertoire, donc cp un nouveau fichier avec le nom correct

  • Exécutez php-fpm pour la deuxième fois

Échec : impossible de trouver /usr/var/log/php-fpm.log

Solution : il n'existe pas de répertoire de ce type du tout, je l'ai modifié dans le fichier de conf mais cela n'a eu aucun effet. Je n'ai pas eu d'autre choix que d'exécuter php-fpm via la commande suivante (j'utiliserai cette commande pour l'exécuter plus tard)

php-fpm --fpm-config /private/etc/php-fpm.conf  --prefix /usr/local/var
  • Exécutez php-fpm. pour la troisième fois

Failed: No pool defined. at least one pool section must be specified in config file

Solution : Allez dans le répertoire /etc/php-fpm.d/ et trouvez le fichier www.conf.default, cp un fichier nommé www.conf

  • Exécutez php-fpm pour la quatrième fois

Échec : le port est occupé

Solution : tuer ce processus

sudo lsof -i tcp:9000#Trouver le numéro de processus occupant le port 9000

kill -9 port#Kill !

  • Cinquième fois que j'exécute php-fpm

Succès !

##Ajout :

Il y a une petite différence lors de la configuration de nginx Sur mac, php-fpm écoute directement le port 9000, mais sur le serveur, il écoute le php7.0-fpm.sock mais pas le. fichier socket. Cette méthode peut être plus rapide, vous devez donc modifier

fastcgi_pass 127.0.0.1:9000;

dans la configuration php sur nginx par :

fastcgi_pass unix:/run/php/php7.0-fpm.sock;

pour exécuter avec succès php

Apprentissage recommandé : "Tutoriel vidéo PHP"

Continuer à ajouter

Une chose très intéressante, lorsque je veux télécharger une vidéo de 27 millions, nginx a directement signalé 413 Request Entity Too Large, mais je ne l'ai pas défini...

Ajouter

server {
    ...
    client_max_body_size 80m;
    ...
}

Relisez la configuration dans la configuration de nginx ( set-enabled/default), Redémarrez le serveur

nginx -s reload
service nginx restart

Ensuite, vous devez modifier php.ini, y modifier deux configurations

upload_max_filesize = 80M
post_max_size = 80M

Puis arrêtez le processus php-fpm, puis redémarrez~

ps : Professeur, il a vraiment ne fait aucune recherche... La raison pour laquelle le mp4 ne peut pas être téléchargé est parce que ce type n'est pas ajouté au système, je dois le trouver moi-même... Mal à l'aise :(

note : il est maintenant plus recommandé de l'utiliser. apt au lieu d'apt-get sous Ubuntu... alors il est temps de changer

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn