web-dev-qa-db-fra.com

php-fpm pour Windows?

La page d'accueil de PHP-FPM http://php-fpm.org/ indique qu'elle fait partie de PHP since PHP 5.3 .3. Maintenant, je me demandais, quand je télécharge les plus récents PHP binaires de php.net, il n'y a pas de php-fpm dedans. Comment puis-je l'obtenir? Est-il même disponible pour Les fenêtres?

31
marc40000

Voici comment configurer php-fpm sous Windows:

  1. Téléchargez le fichier .Zip depuis http://windows.php.net/download/ . Le fichier .Zip doit être VC9 qui contient le fichier FastCGI (php-cgi.exe). Ne téléchargez pas VC6 et ne téléchargez pas le fichier .msi car il nécessite que vous ayez déjà une configuration IIS afin d'installer php-fpm. Le fichier Zip contient le php-cgi. exe qui est ce dont vous avez besoin pour php-fpm. J'ai téléchargé une version légèrement plus ancienne, php-5.3.10-Win32-VC9-x86.Zip, d'ici http://windows.php.net/downloads/ releases/archives / parce que je voulais faire correspondre la version en cours d'exécution sur mon serveur de production.

  2. Décompressez le fichier, par ex. décompressez dans C:\php-5.3.10-Win32-VC9-x86

  3. Modifiez le fichier php.ini selon vos besoins. Ce que j'ai fait:

    # nginx security setting
    cgi.fix_pathinfo=0
    
    extension_dir = "C:\php-5.3.10-Win32-VC9-x86\ext"
    

    activer les modules suivants en les décommentant:

    extension=php_curl.dll
    extension=php_mbstring.dll
    extension=php_mysqli.dll
    
  4. Créez un fichier .bat quelque part, par exemple start-php-fcgi.bat dans le répertoire du serveur Web ou dans le répertoire PHP:

    @ECHO OFF
    ECHO Starting PHP FastCGI...
    set PATH=C:\php-5.3.10-Win32-VC9-x86;%PATH%
    C:\php-5.3.10-Win32-VC9-x86\php-cgi.exe -b 127.0.0.1:9123 -c C:\php-5.3.10-Win32-VC9-x86\php.ini
    
  5. Double-cliquez sur le fichier .bat pour démarrer php-fpm. Une fenêtre apparaîtra et restera ouverte pendant son fonctionnement. C'est un peu ennuyeux, mais je n'ai pas encore envisagé de le configurer comme service.

  6. Configurez votre serveur Web. Si vous souhaitez l'utiliser avec nginx, voici un exemple de configuration pour 127.0.0.1:9123:

    location ~ \.php$ {
        fastcgi_pass    127.0.0.1:9123;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include         fastcgi_params;
    }
    
25
Alan

La réponse de Dereckson est un excellent début. Cependant, pour Apache 2.4 et versions ultérieures, vous n'avez pas besoin d'exécuter PHP-FPM en tant que service distinct, vous pouvez utiliser mod_fcgid pour tout gérer dans Apache.

Voici un exemple de configuration:

LoadModule fcgid_module modules/mod_fcgid.so

FcgidInitialEnv PHPRC "c:/php"
FcgidInitialEnv PATH "c:/php;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;"
FcgidInitialEnv SystemRoot "C:/Windows"
FcgidInitialEnv SystemDrive "C:"
FcgidInitialEnv TEMP "C:/WINDOWS/Temp"
FcgidInitialEnv TMP "C:/WINDOWS/Temp"
FcgidInitialEnv windir "C:/WINDOWS"
FcgidIOTimeout 64
FcgidConnectTimeout 16
FcgidMaxRequestsPerProcess 500

<Files ~ "\.php$">
  AddHandler fcgid-script .php
  FcgidWrapper c:/php/php-cgi.exe .php
</Files> 

Remarque, ceci est basé sur un publication dans Apache Lounge . Aussi utile soit-elle, leur version comportait des guillemets autour de c: /php/php-cgi.exe et si vous le faites, elle NE DÉMARRERA PAS php-cgi.exe, au moins sur Windows Server 2012, et vous obtenez HTTP 500. Pris moi quelques jours douloureux pour comprendre cela.

11
Erica Kane

Aussi ancien que ce post soit, je dois peser ici car ce qui a été posté ici n'est pas PHP-FPM, il fonctionne PHP en utilisant Fast-CGI.

Oui, PHP-FPM signifie PHP-FastCGI Process Manager et implémente donc FastCGI mais vous oubliez que FPM est bien plus que cela car il contient des fonctionnalités de gestion de processus qui ne sont pas gérées par le serveur Web.

Sur les systèmes * nix, PHP-FPM a un processus distinct qui gère les processus enfants PHP et a une configuration détaillée pour spécifier comment ces processus sont gérés. Pour plus de détails sur ces fonctionnalités, lisez ici

Lancer un processus CGI sur Windows n'est pas la même chose. Il ne génère pas de processus de travail, ne les redimensionne pas dynamiquement et n'autorise pas le multithread.

Il n'y a pas encore de PHP-FPM pour Windows. http://php.net/manual/en/install.fpm.php#121725

Cependant, comme suggéré, vous pouvez lancer un processus CGI si vous le souhaitez.

8
Ruben Funai

À partir de PHP v5.3.3, la prise en charge de FPM Server-API [SAPI] a été intégrée dans le noyau PHP. Cela signifie que vous pouvez prendre les codes sources de PHP et les compiler et les construire avec FPM-SAPI [en utilisant --enable-fpm paramètre de configuration] support, au lieu de disons Apache SAPI [--enable-apx2]. Comme indiqué dans PHP-Wiki vous pouvez construire PHP presque de la même manière que vous le faites dans les systèmes * nix - c'est-à-dire, en termes de configuration. Je vous suggère d'apprendre les tenants et aboutissants de la construction PHP dans les systèmes * nix en premier, et essayez même de le faire vous-même [d'habitude configure, make et make install pattern], puis essayez d'utiliser l'expérience acquise pour construire sur l'environnement Windows.

En plus de --enable-fpm paramètre de configuration, il existe également deux paramètres supplémentaires: --with-fpm-user=USERNAME_HERE et --with-fpm-group=USERGROUPNAME_HERE. Ces deux fonctionnent dans un environnement * nix, mais peuvent ne pas être disponibles dans Windows.

Dans l'ensemble, je suis presque sûr que vous pouvez créer votre propre application serveur PHP-FPM sur Windows à l'aide de Visual Studio IDE. Il n'y a pas de build PHP-FPM officiel à la date de la rédaction de ce document.

EDIT 1: Ok, je suppose que je peux me tromper sur la possibilité de construire PHP-FPM sur Windows, car ce SAPI utilise libevent composant de l'environnement * nix. Je suppose que vous devrez vous en tenir à installation fournie par Cygwin après tout.

3
Shahriyar Imanov

PHP-FPM n'est disponible que pour Linux à partir de maintenant. Il y a quelques sites qui fournissent un tutoriel sur la façon d'exécuter php-fpm sur Windows, sous cygwin. Vous pouvez essayer ces guides.

2
Pheng Vang