ZendOptimizer是一种PHP加速器,它用于提高PHP应用的执行速度和性能。MemoryBase@NETWORKSERVICE问题通常与ZendOptimizer在Windows服务器上配置不当或权限设置不正确有关。下面详细介绍如何解决这个问题。
日志中提到事件ID(2)和(487)的相关描述,无法在资源(ZendOptimizer)中找到相关信息,提示可能是缺少必要的注册信息或消息DLL文件,无法从远程计算机显示消息。同时,错误信息中出现了在C:\WINDOWS\TEMP\目录下找不到ZendOptimizer.MemoryBase@NETWORKSERVICE@***文件的提示。这些通常指向配置问题或权限问题。
解决此类问题的方法可以总结为几个关键步骤:
1. 修改C:\WINDOWS\Temp\目录的访问权限,确保ZendOptimizer有权对该目录进行修改。通常,为IIS_WPG(IIS工作进程组)和NetworkService账户添加写入权限是足够的。
2. 检查C:\WINDOWS\temp\目录中是否存在缺少的文件。如果发现有文件名类似于ZendOptimizer.MemoryBase@NETWORKSERVICE的文件缺失,可以尝试创建一个空文件以解决找不到文件的问题。
3. 检查php.ini配置文件中的upload_tmp_dir指令,确保它指向的是正确的临时文件目录。在C:\WINDOWS\temp\目录下设置upload_tmp_dir="c:\windows\temp\"(注意等号两边的空格),保证PHP临时文件路径设置正确。
4. 确保IIS服务有权读取ZendOptimizer的安装目录和相关文件。通常,需要为C:\Program Files\ZendOptimizer-x.x.x\lib\Optimizer-x.x.x目录及C:\Program Files\ZendOptimizer-x.x.x\lib\ZendExtensionManager.dll文件添加IIS_WPG读取权限。注意,具体路径可能因ZendOptimizer的版本不同而有所差异。
5. 关于php.ini文件,有时需要移除或注释掉与eAccelerator相关的配置行,随后重启IIS和MySQL服务以确保更改生效。
6. 另一种解决方案是通过在php.ini文件中加入特定的扩展指令,例如extension=php_yaz.dll,然后重启IIS和MySQL服务。
7. 如果以上方法无效,建议检查服务器上TEMP和TMP环境变量的设置,确保这些目录对Everyone用户组是可写的。这是因为ZendOptimizer可能会使用TMP目录来设置共享内存。
在进行修改时,使用具有管理员权限的账户登录,并确保正确设置用户组和用户权限。管理员应拥有完全控制权限,系统账户也应具有完全控制权限,而用户组则应至少具备读取和运行、列出文件夹目录、读取权限。如果对用户组或用户权限配置有疑问,可以参考微软官方文档或寻求专业IT支持。
解决这类问题的关键在于仔细审查和调整服务器的配置文件、权限设置和环境变量,确保所有路径和权限设置正确无误。通常,通过逐步排查和测试每一步修改,最终能够定位并解决ZendOptimizer.MemoryBase@NETWORKSERVICE问题。如果问题依旧存在,建议查看更详细的系统日志,或联系技术支持人员获得更专业的帮助。