最近在用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模块
下面说切换方法:
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
<IfModule fcgid_module>
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
</IfModule>这个时候重启Apache就已经切换完成了
不过我配置了虚拟主机,所以还得对虚拟主机做更改
4、原虚拟主机配置
<VirtualHost *:80>
ServerName myphalcon.com
ServerAlias myphalcon.com
DocumentRoot "${INSTALL_DIR}/www/myphalcon/public"
<Directory "${INSTALL_DIR}/www/myphalcon/public/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>更改后(ExecCGI就是刚才配置的Options)
<VirtualHost *:80>
ServerName myphalcon.com
ServerAlias myphalcon.com
DocumentRoot "${INSTALL_DIR}/www/myphalcon/public"
<Directory "${INSTALL_DIR}/www/myphalcon/public/">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require local
</Directory>
</VirtualHost>如果需要设置成不同的php版本,可以在模块中添加
FcgidWrapper "D:/wamp/bin/php/php5.6.31/php-cgi.exe -c D:/wamp/bin/php/php5.6.31/phpForApache.ini" .php即
<VirtualHost *:80>
ServerName localhost
ServerAlias localhost
DocumentRoot "${INSTALL_DIR}/www"
<Directory "${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
</Directory>
</VirtualHost>5、重启Apache
再次使用curl访问本项目或其他本地项目接口就可以正常访问了
但注意这时的php配置文件使用的是与php-cgi.exe同目录下的php.ini配置文件。如果想使用别的配置文件,则必须在php-cgi.exe后面加参数。我们可以打开Windows PowerShell或者cmd来查看。
新进入php-cgi.exe的目录
查看帮助
可以看到 -c可以指定配置文件
所以打开httpd.conf文件,改成
重启服务,就可以看到指定成功。
版权声明:本文为u014691098原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。