windows下更改Apache以fastcgi方式运行php

最近在用phalcon3.3框架,本地环境是wampserver,选的是php7.0版本,在项目中发现使用curl请求本项目其他接口或者其他项目接口均报错,切换成php5.6版本则可以正常请求,试了很多方法都没办法解决。突然想到Apache默认是用自己的php模块处理的,会不会是因为这个原因。于是尝试把Apache切换以fastcgi方式运行。
报的错误是:

Error: Access to undeclared static property: Phalcon\Di::$_default in D:\wamp\www\myphalcon\config\services.php on line 35

这是使用Apache默认的php模块
windows下更改Apache以fastcgi方式运行php_第1张图片
下面说切换方法:
1、下载fastcgi模块,打开https://www.apachelounge.com/download/选择相应的VC版本下载,我的使用VC14编译的,所以选的是VC14版本
2、下载解压后,将mod_fcgid.so文件复制到Apache的安装路径modules目录中
3、打开配置文件httpd.conf,添加以下代码

LoadModule   fcgid_module modules/mod_fcgid.so

    FcgidIOTimeout 60
    FcgidConnectTimeout 30
    FcgidMaxProcesses 8
    FcgidOutputBufferSize 64
    ProcessLifeTime 240
    FcgidMaxRequestsPerProcess 500
    FcgidMinProcessesPerClass 0

    Options ExecCGI
    AddHandler fcgid-script  .php 
    #你项目php安装目录
    FcgidWrapper "D:/wamp/bin/php/php7.0.23/php-cgi.exe" .php

这个时候重启Apache就已经切换完成了
不过我配置了虚拟主机,所以还得对虚拟主机做更改
4、原虚拟主机配置


     ServerName myphalcon.com
     ServerAlias myphalcon.com
     DocumentRoot "${INSTALL_DIR}/www/myphalcon/public"
     
       Options +Indexes +Includes +FollowSymLinks +MultiViews
       AllowOverride All
       Require local
     

更改后(ExecCGI就是刚才配置的Options)


     ServerName myphalcon.com
     ServerAlias myphalcon.com
     DocumentRoot "${INSTALL_DIR}/www/myphalcon/public"
     
       Options Indexes FollowSymLinks Includes ExecCGI
       AllowOverride All
       Require local
     

如果需要设置成不同的php版本,可以在模块中添加

FcgidWrapper "D:/wamp/bin/php/php5.6.31/php-cgi.exe -c D:/wamp/bin/php/php5.6.31/phpForApache.ini" .php


  ServerName localhost
  ServerAlias localhost
  DocumentRoot "${INSTALL_DIR}/www"
  
    Options +Indexes +Includes +FollowSymLinks +MultiViews
    #Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require local
    FcgidWrapper "D:/wamp/bin/php/php5.6.31/php-cgi.exe -c D:/wamp/bin/php/php5.6.31/phpForApache.ini" .php
  

5、重启Apache
windows下更改Apache以fastcgi方式运行php_第2张图片
再次使用curl访问本项目或其他本地项目接口就可以正常访问了

但注意这时的php配置文件使用的是与php-cgi.exe同目录下的php.ini配置文件。如果想使用别的配置文件,则必须在php-cgi.exe后面加参数。我们可以打开Windows PowerShell或者cmd来查看。
新进入php-cgi.exe的目录
windows下更改Apache以fastcgi方式运行php_第3张图片
查看帮助
windows下更改Apache以fastcgi方式运行php_第4张图片
可以看到 -c可以指定配置文件
所以打开httpd.conf文件,改成
windows下更改Apache以fastcgi方式运行php_第5张图片
重启服务,就可以看到指定成功。
windows下更改Apache以fastcgi方式运行php_第6张图片

你可能感兴趣的:(phalcon,apache)