IIS下Zend 出现 Unable to view file mapping 问题的解决方法汇总
zend 错误日志中有:Unable to view file mapping, 试图访问无效的地址。网上搜了下解决方法有
解决方法如下:
对比php两个版本的php.ini文件。
;extension=php_yaz.dll
;extension=php_zip.dll检查这个两个是否存在新的版本中。同时确认extension=php_zip.dll
前面的;去掉保存重启iis和mysql 大功告成 另外一种说法
eAccelerator v0.9.4-rc1, 这个php加速插件,把这个屏蔽掉就可以了 其他方面:
1.检查下c:\windows\temp\目录是否有iis用户组和NETWORK_SERVICE访问权限
2.zend安装目录是否有iis用户组和NETWORK_SERVICE访问权限,写入权限.
3.删除c:\WINDOWS\temp\ 下的垃圾文件.
4.php.ini文件中设置upload_tmp_dir="c:\windows\temp\"(注意=两边的空格)
5.还有一条就是找不到ZendOptimizer.MemoryBase@SYSTEM文件吧,方法同上面,在c:\WINDOWS\temp\建一空文件,文件名ZendOptimizer.MemoryBase@SYSTEM即可
==================================================================================
查看“事件查看器”中出现一个Zend Optimizer错误,而且这个错误都是每次启动服务器之后产生的:
事件类型: 错误
事件来源: Zend Optimizer
事件种类: 无
事件 ID: 487
日期: 2008-2-28
事件: 9:22:15
用户: N/A
计算机: XXX
描述:
事件 ID ( 487 )的描述(在资源( Zend Optimizer )中)无法找到。本地计算机可能没有必要的注册信息或消息 DLL 文件来从远程计算机显示消息。您可能可以使用
/AUXSOURCE= 标识来检索词描述;查看帮助和支持以了解详细信息。下列信息是事件的一部分: Unable to view file mapping, 试图访问无效的地址。
查阅了一下网上的资料,其实只有一个版本,具体内容可以看下面的参考资料。我这里结合自己的解决方法总结一下:
首先如果你的PHP使用了eAccelerator则将其注释掉就可以了,这是因为Zend Optimizer同eAccelerator相冲突。其实二者都是用于加速PHP程序的,只要使用其中的一个就可以
了。
如果你的PHP没有使用eAccelerator的话则大部分是权限的问题了,这种情况在Apache+PHP中很少见,通常都是在IIS+PHP这种搭配中出现的比较多。这个时候只需要修改%
SystemRoot%\Temp的权限,设置为EveryOne全部允许;然后如果该目录下没有文件的话就手动新建一个文本文件然后命名为
即可。
如果还是有问题的话可以查看一下php下的ext目录中是否有php_yaz.dll和php_zip.dll两个文件,有哪一个就在php.ini将 “extension=…”前面的分号去掉。
================================================================================
前两天在本地调试PHP程序时,发现安装的VertrigoServ中,ZendOptimizer运行不正常,在C盘根目录下生成了个ZendOptimizer_errors文件,最主要的问题是下面两个:
代码如下:
Unable to open base address file:系统找不到指定的路径。 Unable to view file mapping:重叠 I/O 操作在进行中。
下面分享我的问题核心:出现这样的问题,一般是缓存目录指定错误所导致的!
步骤方法:右击我的电脑 - 属性 - 高级 - 环境变量 - 将用户配置里的TEMP与TMP的路径指定为系统变量里的TEMP与TMP的路径值:如%SystemRoot%\TEMP或者其他路径确定路径,如D:\Temp这个路径确定,重启电脑。
再次运行php服务器程序,C盘根目录下再不出现ZendOptimizer_errors.txt报告,报告里也不会出现上面的两个错误了,设置好的路径目录下自动生成了等这两个文件。问题解决!
2009年5月23日补充解决办法:
1、修改C:\WINDOWS\Temp\目录的访问权限,使Zend可以对目录进行修改,一般添加IIS_WPG和Network Service的写入权限就够了。
2、有可能在C:\WINDOWS\temp\目录下找不到指定文件,查找该文件夹下是否有文件名和 SERVICE,如果没有,新建这两个文件,空文件即可。
3、php.ini文件中设置upload_tmp_dir = "c:\windows\temp\"(注意=两边的空格)。
4、还有可能就是没有读取ZEND目录的权限,为C:\Program Files\ZendOptimizer-2.6.2\lib\目录添加IIS_WPG和Network Service的读取权限(注意zend版本和安装目录不同时前面的路径也有所不同)
注意:前面提到的“C:\WINDOWS\Temp\”上当并非绝对,关键看php.ini文件中“upload_tmp_dir”等于什么路径。2009年3月25日补充:
在Windows Server 2003 系统的NTFS的文件系统中,还涉及到访问权限问题,如ZendOptimizer的默认安装目录为C:\Program Files\Zend,我们需要给Zend这个目录添加一个IIS的启动账户IIS_WPG的读取运行,列出目录,读取的权限。这样就能解决因权限导致的 Unable to view file mapping错误。