环境: windows 2008 server R2 IIS7.5 fastcgi
问题: 原来的程序采用Apache 运行,现在移植到IIS 上,原来的在程序中调用生成图片的系统程序出现不能执行问题,也看了很多微博,现在总结一下,从一下几个思路中进行解决;
因为原来的程序是执行正常的,因此主要是环境的变化导致的,所以排除程序问题,主要是从权限不同考虑。
1: 在查询里看一下执行的用户是谁。
exec( "whoami" , $output , $ret );
显示一下$output 的信息,可以确认一下,iis执行的时候,用户是谁。
$ret 如果是 1 , 则说明执行有错误, 0 则执行正常。
2: 因为apache 是从系统用户运行的,iis是网络用户,因此需要设置cmd的用户权限,位置在c:/windows/system32/cmd.exe , 增加IUSR的可执行权限;
增加了此用户还是不能正常运行;
3: 配置IIS的应用程序池,把标识改为LocalSystem , IIS默认的是ApplicationPoolIdentity
4: 增加网站权限,因为程序需要写入数据,点击你的网站,又上角有一个编辑权限,给你需要写入数据的目录增加你的网络用户权限读写,一般为IUSR用户。
5:如果前面还不能解决房问题,确认一下执行程序的位置,因为IIS采用的网络用户执行,因此系统的环境与普通验证用户不同,把需要执行的程序路径写完整了,不要采用相对路径;往往可以解决问题。
我的这个问题上摸索了一个上午,最后在第五部的时候把问题解决了,在我本地windows7 没有问题,最后增加了一个完整路径的配置,以后不同环境增加一个配置,我把这个问题整理一下,以便给有类似问题的人一个解决思路吧。
时间: 2024-10-10 16:37:07