一般情况下,都能实现显示phpinfo()的页面。就从能够显示该页面之后出现的问题说起
php的问题都会显示在phpinfo()页面上
首先查看自己的php.ini的路径是否正确
q:我已经配置了php.ini文件,但重新启动服务器后为什么没有任何效果?
a:这个问题主要有这几种情况。
第一个原因是由于系统所读取的php.ini文件与你当时修改的php.ini文件不一致造成的
1、 可以通过phpinfo()的configuration file (php.ini) path选项查看当前php服务器读取的是哪一个php.ini
2、 如果你要更改php.ini的文件存取位置,可参考php.ini的搜索顺序,如下所示:
a) sapi 模块所指定的位置(apache 2 中的 phpinidir 指令,cgi 和 cli 中的 -c 命令行选项,nsapi 中的 php_ini 参数,thttpd 中的 php_ini_path 环境变量)
b) hkey_local_machine\software\php\inifilepath(windows 注册表位置)
c) phprc 环境变量
d) 当前工作目录(对于 cli)
e) web 服务器目录(对于 sapi 模块)或 php 所在目录(windows 下其它情况)
f) windows 目录(c:\windows 或 c:\winnt),或 --with-config-file-path 编译时选项指定的位置
3、 一般做法:通过设置phprc 环境变量,
a) 操作:右击我的电脑->属性->高级->环境变量
b) 在系统变量下新建一个“变量名为phprc ,变量值为你的php.ini文件所地文件路径”的环境变量
第二个原因是:php没有找到相应的扩展库
1、 查看php找到的扩展库位置:在phpinfo()的extension_dir选项可以看到
2、 在php.ini更改extension_dir文件
第三个原因:没有完全重启iis
1、 对php.ini的修改必须完全重启iis才能起作用,而不能只是对当前站点进行重启。
2、 进入cmd,停止服务器:net stop iisadmin;启动服务器:net start w3svc
q:我的php怎么没有办法激活mysql扩展库
a:在php5.0以上版本,mysql 默认未启用,因此需要咱们进行手工激活。
1、 在php运行mysql,必须在 php.ini 中激活 php_mysql.dll 动态连接库,另外还需要访问 mysql 客户端连接库即libmysql.dll文件
2、 可以通过php.ini中的extension激活 php_mysql.dll 动态连接库;而libmysql.dll文件必须放在windows 的系统路径 path才能访问,可以通过把libmysql.dll复制到system32目录下,也可以在path环境变量中新增一个路径。
3、 建议做法:通过设置path,方便以后的php升级,在系统环境变量中的path后增加“libmysql.dll”所在的文件夹即可。记得通过“;”号隔开
4、 [案例]最近,服务器总是找不到mysql扩展库,导致程序无法运行。因此,把所有文件删除后重新配置php服务器。但最后在安装mysql的时候,却始终无法激活mysql扩展库。
在phpinfo()中找到的信息如下:
path:c:\php
phprc:c:\php
extension_dir:c:\php\ext\
另外,我测试了将其它的库激活,如msql、gd2、xml,在phpinfo()都可以正常显示
证明php能找到php_mysql.dll 动态连接库,而mysql的运行的另一个条件是能够讯问mysql 客户端连接库即libmysql.dll文件,看来问题就在这里了。
我对c盘搜索libmysql.dll文件,发现在system32和php文件夹各有一个文件,做好备份后,我尝试删除system32的libmysql.dll文件,发现被锁死,无法删除,却可以重新命名,我随便修改了名称,再重新启动iis,服务器运行正常。
补充一点:如果configuration file (php.ini) path 显示为c:\windows
就说明,php.ini文件没有读取到。
另外,我发现,在用iis整合php时,有两种方式:isapi与cgi模式
这两种方式,我们都可以看到phpinfo页面
但是使用isapi模式,无法读取环境变量,所以通过环境变量phprc设置的php.ini路径无法找到。
使用cgi就可以,这样就不必把好多文件拷到系统文件下