PHP-FPM的主页http://php-fpm.org/声明它自PHP 5.3.3以来就是PHP的一部分。 现在,我想知道,当我从php.net下载最新的PHP二进制文件时,其中没有php-fpm。 我如何得到它? 它甚至可用于Windows?
这里如何在Windows上设置php-fpm:
从http://windows.php.net/download/下载.zip文件。 .zip文件应该是具有FastCGI文件(php-cgi.exe)的VC9。 不要下载VC6,也不要下载.msi文件,因为它需要你已经安装了IIS,才能安装php-fpm。 该zip文件包含php-cgi.exe,这是你所需要的php-fpm。 我从http://windows.php.net/downloads/releases/archives/下载了一个稍微旧的版本,php-5.3.10-Win32-VC9-x86.zip,因为我想匹配在我的作品上运行的版本服务器。
解压缩文件,例如解压到C:\ php-5.3.10-Win32-VC9-x86
根据需要编辑php.ini文件。 我做了什么:
# nginx security setting cgi.fix_pathinfo=0 extension_dir = "C:\php-5.3.10-Win32-VC9-x86\ext"
通过取消注释来启用以下模块:
extension=php_curl.dll extension=php_mbstring.dll extension=php_mysqli.dll
在某个地方创建一个.bat文件,例如在web服务器目录或PHP目录中的start-php-fcgi.bat:
@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
双击.bat文件启动php-fpm。 一个窗口将弹出并保持开放,而其运行。 它的烦人的一种,但只是没有考虑到它作为服务设置。
配置您的网络服务器。 如果你想使用nginx,这里是一个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; }
德雷克森的回答是一个很好的开始。 但是,对于Apache 2.4和更高版本,您不需要将PHP-FPM作为单独的服务运行,您可以使用mod_fcgid来处理Apache中的所有内容。
这是一个示例配置:
Loadmodulee 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>
请注意,这是基于Apache Lounge的一篇文章 。 尽管有帮助,他们的版本引用了c:/php/php-cgi.exe,如果你这样做,它不会启动php-cgi.exe,至少在Windows server 2012上,你会得到HTTP 500. Took我花了几天的时间才弄清楚。
从PHP v5.3.3开始,FPM server-API [SAPI]支持已被集成到核心PHP中。 这意味着,您可以使用PHP的源代码,并使用FPM-SAPI(使用--enable-fpm
配置参数)支持编译和构建它们,而不是让我们说Apache SAPI [ --enable-apx2
]。 如PHP-Wiki所示,您可以像在* nix系统中那样构建PHP,即配置方式。 我建议你先学习在* nix系统中构建PHP的细节,甚至尝试自己做(通常的configure
, make
和make install
模式),然后尝试利用从它获得的经验来构建Windows环境。
除了--enable-fpm
配置参数外,还有两个附加参数:– --with-fpm-user=USERNAME_HERE
和--with-fpm-group=USERGROUPNAME_HERE
。 这两个工作在* nix环境中,但可能在Windows中不可用。
总的来说,我确信你可以使用Visual Studio IDE在Windows上构建自己的PHP-FPM服务器应用程序。 截至本文撰写之日,并没有正式的PHP-FPM版本。
编辑1:好吧,猜测我可能是错误的在Windows上构建PHP-FPM的可能性,因为这个SAPI使用libevent
组件从* nix环境。 猜猜你将不得不坚持使用Cygwin捆绑安装 。
截至目前,PHP-FPM仅适用于Linux。 有一些网站提供了关于如何让php-fpm在Windows下运行的教程,在cygwin下。 你可以试试这些指南。