IIS+php环境无法执行exec、system解决方案

IIS+php环境无法执行exec、system解决方案

环境: windows 2008 server R2 IIS
问题: 我们常需要php去执行外部程序,比如python脚本,bat批处理文件,但是新手因为不会配置环境,用了exec、system函数也是不能执行,我刚开始也是遇到这个坑,也看了很多微博,现在总结一下,从一下几个思路中进行解决;

1,首先要确保php的配置文件php.ini文件没有禁用exec、system等功能,如果禁用了要把它去除(打开php.ini文件,把里面的disable_functions = 后面全部删除掉),再查看php.ini文件里面的safe_mode(安全模式)是否等于Off。等于On的话要把他改成Off。改完重启服务器/电脑。

2: 因为iis是网络用户,因此需要设置cmd的用户权限,进入C:\Windows\System32,找到cmd.exe,然后右键->属性->高级->所有者->编辑,选择 所有者更改为下面的“Administrator”,然后一直确认完成。关闭cmd属性窗口,然后再重新找到cmd.exe,然后右键->属性->安全->编辑->添加,然后输入IIS_IUSRS,然后点击检查名称,然后一直确认到完成。最后关闭cmd属性窗口。

3: 打开IIS管理器,进入IIS的应用程序池,把标识改为LocalSystem , IIS默认的是ApplicationPoolIdentity。(具体是选择右边列表,右击点击高级设置,把里面的标识ApplicationPoolIdentity或者其他的,换成LocalSystem就可以了,全部换了)

 

4: 增加网站权限,因为程序需要写入数据,点击你的网站,选择网站右击选择,编辑权限,然后点击 安全->编辑->添加->然后输入IIS_IUSRS,然后点击检查名称,然后一直确认到完成。给你需要写入数据的目录增加你的网络用户权限读写,编辑好记得重启服务器/电脑

 

5:如果前面还不能解决房问题,确认一下执行程序的位置,因为IIS采用的网络用户执行,因此系统的环境与普通验证用户不同,把需要执行的程序路径写完整了,不要采用相对路径;往往可以解决问题。

我的这个问题上摸索了一个上午,最后在第五部的时候把问题解决了。我把这个问题整理一下,以便给有类似问题的人一个解决思路吧。

阅读剩余
THE END