本文的目的是搭建一个windows下的 PHP + Sql Server 的运行环境,服务器选择了nginx,php用的是cgi的模式,方便切换版本。

准备工作

用到的软件下载地址如下:

nginx

http://nginx.org/en/download.html

php5.6.40

https://windows.php.net/downloads/releases/archives/php-5.6.40-Win32-VC11-x86.zip

这个只能选32位,sqlsrv官方只给了32位的扩展

php7.4.9

https://windows.php.net/downloads/releases/php-7.4.9-Win32-vc15-x64.zip

sqlsrv

https://docs.microsoft.com/zh-cn/sql/connect/php/release-notes-php-sql-driver?view=sql-server-ver15#previous-releases

这个地址有sqlsrv所有的地址,php5.6.40用3.2版本,php7.4.9可以用5.8版本。

odbc11

https://docs.microsoft.com/zh-cn/sql/connect/odbc/windows/release-notes-odbc-sql-server-windows?view=sql-server-ver15#previous-releases

这也是个综合地址,我们用11就可以了,11只支持Sql Server 2008 r2 及以上的数据库。看自己的系统是32位还是64位,下载对应的版本。

vc11 运行库

https://www.microsoft.com/zh-CN/download/details.aspx?id=30679

这个是给 PHP5.6 用的

vc15 运行库

https://www.microsoft.com/zh-cn/download/details.aspx?id=48145

这个是给 PHP7.4 用的

xdebug

https://xdebug.org/download/historical

这个是综合的地址,PHP5.6的下载链接在这里找
https://xdebug.org/files/php_xdebug-2.5.5-5.6-vc11.dll

https://xdebug.org/download

PHP7.4用的地址在这个里面找

WinSW

https://github.com/winsw/winsw/releases/download/v2.9.0/WinSW.NET4.exe

这个工具可以把 nginx 和 PHP 以包装成系统服务

以上软件 nginx 和 PHP 都是绿色软件,解压到一个专门的目录即可,sqlsrv,xdebug安装到对应的 PHP ext 目录。odbc 按操作系统的版本装,vc11,vc15 按php是32位还是64位装。

PHP sqlsrv 系统要求

https://docs.microsoft.com/zh-cn/sql/connect/php/system-requirements-for-the-php-sql-driver?view=sql-server-ver15

主要配置

nginx

nginx.conf

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    include vhost/*.conf;
}
这里把站点的配置拆分成独立的文件了,都放在vhost目录下面

vhost/a.conf

server {
    listen       80;
    server_name  127.0.0.1;
    root   D:/code/sdorder/api-next/public;
    location / {
        index  index.php index.html index.htm;
        # thinkphp用
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php?s=$1 last;
        }
    }
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9007;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

}
nginx填路径的时候最好用正斜线(/),反斜线(\)竟然会转义,比如t会转义成制表符

nginxservice.xml

<service>    
 <id>nginx</id>    
 <name>nginx</name>    
 <description>nginx</description>    
 <executable>d:\soft\nginx\nginx.exe</executable>    
 <logpath>d:\soft\nginx\logs</logpath>    
 <logmode>roll</logmode>    
 <depend></depend>    
 <startargument>-p d:\soft\nginx\nginx.exe</startargument>    
 <stopargument>-p d:\soft\nginx\nginx.exe -s stop</stopargument>    
</service>
这个文件是给 WinSW 用的,注意把里面的文件路径改成自己的路径,把下载的这个复制到nginx的目录,改名成 nginxservice.exe,然后执行 nginxservice install 即可把nginx安装成系统服务。

PHP

php.ini 关键配置

extension_dir="ext"
extension=php_pdo_sqlsrv_74_ts_x64.dll
zend_extension=php_xdebug.dll
[xdebug]
xdebug.remote_enable = on
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
xdebug.show_local_vars=0
;启用远程调试
xdebug.remote_autostart= 1
xdebug.remote_port = "9000"
xdebug.remote_host = "127.0.0.1"
xdebug.var_display_max_depth = 15
xdebug.var_display_max_data = 1024
xdebug.var_display_max_children=128
这个配置里面主要是扩展的名称要一致

php7-fpm.xml

<service>    
 <id>php7</id>    
 <name>php7-fpm</name>    
 <description>php7-fpm</description>    
 <executable>d:\soft\php7\php-cgi.exe</executable> 
 <arguments>-b 127.0.0.1:9007</arguments>  
 <logpath>d:\soft\php7\logs</logpath>    
 <logmode>roll</logmode>    
 <depend></depend>   
</service>
这个文件也是给 WinSW 用的,复制一份到 PHP 的目录改名成php7-fpm.exe,然后执行 php7-fpm.exe install 即可安装成系统服务,PHP 5.6 同理,注意要设置成不同的端口,不同的名称。nginx 里面也配置不同的端口,即可实现多版本的控制。

本文由 yang 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

楼主残忍的关闭了评论