无法读取php.ini,Windows环境下Apache PHP无法读取PHP.ini

环境:Windows server 2008 + Apache 2.4.3 + PHP 5.3.20

发生的情况是一台完全正常运作的环境,ghost 整个系统后,安装到第二台当备援主机,

结果第二台的系统启动正常,但网页一片空白。

因为 MIS 搞不定,所以我就接过来找问题.....

网页空白当然马上直觉是 PHP 错误,查了 log 数据夹却没有 php error 档案 (!?)

然后开始 PHP 除错 + 心里暗骂OOXX (因为要找好几层) ,发现了几个诡异的状况

1. session_start() 有成功,但是指定储存 session 的数据夹中却没有档案

2. 终于印出错误讯息 Fatal error: Call to undefined function mysql_connect() ,但检查 php.ini 确定有设定加载 mysql ,dll 档案也存在

印出 phpinfo() 只有 mysqlnd 函式库 ,却没有 mysql,而 error_log 设定值为空值

(我知道 mysql 函式库要废掉了~不过程序写的很差...嗯...打算死期到了的时候再医...)

Apache 到底吃到哪一个 php 设定档了 !?

httpd.conf 跟 php 安装有关的设定指令只有两行

PHPIniDir "C:\xxxxx\PHP\"

LoadModule php5_module "C:\xxxxx\PHP\php5apache2_4.dll"

然后我在正常运作的撰写环境做了测试,想要测出异常的环境情况

1. 把 php.ini 删掉,完全没有 .ini 设定档  =>  重新启动 Apache phpinfo() 可执行 (震惊,怎么能跑 php ?)

2. 把 PHPIniDir "C:\xxxxx\PHP\" 批注起来  =>  重新启动 Apache phpinfo() 可执行 (再次震惊,这个也是不必要的吗?)

3. 把 LoadModule php5_module "C:\xxxxx\PHP\php5apache2_4.dll" 批注起来,PHP 果然没启动了 (不然我以为我改到错的 httpd.conf )

而 1 跟 2 印出的 phpinfo() ,参数设定跟异常环境相同,只有 mysqlnd ,error_log 没有设定值

大胆推论(我没爬官方文件...),PHP 参数有默认值,没有 php.ini 档案也没关系

但是为什么有 php.ini , PHPIniDir "C:\xxxxx\PHP\" 会没有作用?

虽然台的环境用相同的设定档是正常,但想到我被斜线阴了几次的经验

(不知道为何 "不只一个人" 有文件参考可以copy,却还是习惯自己手 key 参数值,导致调整完后 apache 无法启动,让我找到眼睛脱窗都找不到错误 ="=)

马上改成正斜线 PHPIniDir "C:/xxxxx/PHP/"  重新启动!    阿母~我出运了!抓到 php.ini 的设定了!www.it165.net

证明这次又是反斜线阴我,尤其是 N 台计算机都可以吃这个设定,就今天这台主机反骨....

( 而且被 ghost 前的环境是能正常跑相同参数值的 = =??? 莫非是 ghost 让它的个性变了吗? )

另外我想要证明反斜线不是我恍神打的 (台的设定档是我调的) ,

虽然我每次也会搞不清楚要打正的还是反的,但是安装 php 的执行档会自动修改 httpd.conf 增加 php 参数

我一向秉持着原本打什么斜线,调整设定时我就打相同的斜线,绝‧对‧不‧手‧贱 !

因此开启了备份的 php.exe 安装档,重新让它安装 php

测试结果,的确是在自动安装文件时添加的路径为 反斜线\

以后要记得 PHP 的安装档执行完后,要检查路径为正斜线 /

(正斜线就是由右到左)

最后有个小插曲,

在写这篇文章的时候,想把我正常的撰写环境再弄成相同的异常环境,

把 PHPIniDir "C:/xxxxx/PHP/" 批注后 apache 重启,居然还是有原本 php.ini 的设定 !?

我又再度傻眼了,到底是内存有暂存还是我的结论是错的?

愤怒的重开机后,phpinfo() 中就抓不到 php.ini 的设定值了,呈现异常环境的状态。

好险上面一整篇的 complain 文章没白打。

(今天的运气超不好)

/* 2013.5.29 补充 */

今天早上请前同事(美工)帮我查新版 wamp 的 httpd.conf 设定

在她的环境 wamp 是没有 PHPiniDir 这个参数,却能正确抓到 php.ini 里设定值

想必事情不单纯.....(沉思)

该不会是我 上一篇 说的环境变量吧(!)

马上查了我的撰写环境、正式环境 跟 备援环境(也就是异常的那台)

果然只有正式环境有设定系统环境变量...另外两个都是没设定的

所以我算是误打误撞的刚好用到两台没设环境变量的计算机找问题

PHPRC 这个环境变量对 PHP 的重要性,相当于 JAVA 的 JAVA_HOME 阿....

将 PHPRC 及 Path 修正正确后,在 httpd.conf 中没有设定 PHPiniDir 也没有关系了。

也证明 N 台计算机没出事是因为有设 PHPRC 的关系,

ghost 档案刚好是旧备份,所以没有记录到之后调动的环境变量(结案)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值