设为首页 收藏本站
查看: 677|回复: 0

[经验分享] 修复一个 PHP 配置故障

[复制链接]

尚未签到

发表于 2017-3-25 08:45:07 | 显示全部楼层 |阅读模式
  故障现象:
  在 Windows Server 2003+IIS6.0 环境下,原先配置好的 PHP5.0.4 可以正常工作。但在同一台机器上,Apache2.2.8+PHP5.2.5下正常运行的代码,在 IIS 下不能正确执行 exec() 函数。比如,exec(’cd’,$arr,$ret) 语句,其执行结果,$arr 数组的值应该是包含该语句的 php 文件做在的 Windows 路径,但结果却是“C:\Windows”文件夹。并且不能正确执行其他外部 exe 程序。
  诊断:
  IIS 配置里,已经开放 isapi 扩展允许。
Windows\system32\cmd.exe 已经加过 IUSR_… 账户权限。
要执行的外部 exe 程序,已经拷贝到 Windows\system32 文件夹下,也已经加过 IUSR_… 账户权限。
网站所在的文件夹,已经赋予 IUSR_… 账户权限。
  怀疑是 PHP 版本过低,或哪里权限不够导致该问题。
  (1)升级 PHP5.0.4 到 5.2.5
Windows 的全局 Path 变量配置指向 PHP5.2.5 文件夹。PHP5.2.5 的 php.ini 文件拷贝到 Windows 文件夹下。网站的 .php 映射指向到 PHP5.2.5 文件夹下的 php5isapi.dll。重启 IIS 后,打开网站,弹出一个提示框,提示需要输入用户名和密码,输入 Windows 的 Administrator 账户和密码后,仍不能打开网站。
这时想到,给网站所在文件夹加上 User 账户的读取和执行权限试一下。执行该操作后,不再弹出要求账户和密码的对话框,可以打开网站的下级页面(这一步至关重要)。但不能打开首页,可能是因为首页调用了数据库连接的原因。这时能打开测试 exec() 函数的 php 页面,结果仍然不正确。
这时怀疑是已经起作用的 PHP5.0.4 的文件和 5.2.5 相冲突。果然,在 Windows\system32 文件夹下发现原 5.0.4 的所有 .dll 文件,包括 PHP5.0.4 文件夹下和 PHP5.0.4\ext 下的 .dll 文件,都被拷贝到了这里!(注意,这不是必须的,是听信某些“教程”的教唆而这么做的。但既然拷贝到了这里,可能已经其作用了。)于是,把 IIS 和 Apache 服务关闭,把 PHP5.2.5 的所有 dll 文件也拷贝到这里(入乡随俗、如法炮制)。再启动机器–启动机器是因为让 Windows 重新加载最新的 .dll 文件。这时,PHP 因该是全套升级到了 5.2.5 版本了。
  启动机器后,报错“No input file specified”,看来有门,因为错误信息已经变化了,说明前述的配置在生效了。在网上搜索产生该错误信息的原因,提示“在 IIS 的 ISAPI 模式下出现‘No input file specified’信息,只要把 php.ini 里的 doc_root = ……注释掉就可以了”,照此提示,在 php.ini 里的 doc_root = …… 语句前加个分号,注释掉语句,再重新启动 IIS。全好了!
  注意, doc_root = …… 语句在 php.ini 里一般是“doc_root =”,就是值是空的。但因为我的 php.ini 文件是从与 Apache 配合的 PHP 文件夹拷贝过来的,可能在安装 Apache 时,Apache 赋了一个值。其实把该值设为空的,应该和和注释掉的效果相同。这里不是关键的地方,仅仅是一个小插曲而已。
  结论:
  问题解决了。但不能确定是因为给网站所在文件夹加上了 User 账户的权限,还是因为升级 PHP,而导致问题的解决的。总之,肯定是上述2个操作的某一把问题解决了,但不能确定是哪一个?应该不是因为2个操作同时起作用的吧,感觉不是,没有理由。
  还有一个收获,就是,Windows 很多问题是因为权限配置引起的,所以,告诫那些外行系统管理员,请不要随便加上或去除文件夹的的权限,从而引起系统的安全性降低和意外故障。再注意,配置系统也要做好记录,并及时测试该配置结果对系统的影响,不要哪天发现系统不对劲,还不知道是哪个配置引起的。
  张庆(网眼) 2009-7-3
来自“网眼视界”:http://blog.why100000.com
“十万个为什么”电脑学习网:http://www.why100000.com

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-354965-1-1.html 上篇帖子: php面向对象编程一 下篇帖子: 答复: PHP验证框
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表