当Apache通过Task Planner启动时,在Windows 7上从PHP 5调用Excel到COM失败
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了当Apache通过Task Planner启动时,在Windows 7上从PHP 5调用Excel到COM失败,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2630字,纯文字阅读大概需要4分钟。
内容图文
嘿伙计们,这个问题不能太复杂.请提供一个解决方案,至少找出问题的根本原因.
我目前正在编写一个应用程序,它通过COM控制Excel:该应用程序创建一个基于COM的Excel实例,打开一些XLS文件并读取其内容.
情景一
在Windows 7上,我使用具有系统管理员权限的xmapp-control启动Apache和mySQL.一切都按预期工作.基于PHP的控制器脚本按预期与Excel交互.
情景二
如果我将Apache和mySQL作为“后台作业”启动,则会出现问题.方法如下:
>我使用Windows 7 Task Planner创建了两个作业.一个运行apache_start.bat,另一个运行mysql_start.bat.
>在Windows 7启动时,这两个任务都以SYSTEM的身份运行.
Apache和mySQL按预期工作.具体来说,Apache提供来自客户端的HTTP请求,PHP可以与mySQL通信.
当我调用PHP控制器,它使用COM调用并与Excel交互时,我收到一个错误.
错误消息来自Excel [不是COM本身],如下所示:
> Excel无法读取指定的Excel文件
>由于名称不正确的工作表,Excel无法保存文件
有趣的是,第一次运行基于PHP的控制器脚本时,首先需要几秒钟来呈现错误消息.每次后续运行都会立即呈现错误消息.
Windows系统日志未显示单个问题报告条目.
注意,PHP程序和Apache实例没有改变 – 除了Apache的启动方式.
至少PHP控制器脚本完全能够读取文件系统,因为它通过某个目录的scandir()为XLS文件提供了pathes.
并发问题不能成为问题的原因.特定PHP控制器的单个实例与Excel交互.
题
有人可以提供详情,为什么会这样?或者提供隔离问题的最终原因的方法(例如,通过PowerShell 2脚本)?
UPDATE-1 :: 2011-11-29
正如提议的那样,我将Task Planner工作从SYSTEM切换到传统用户.作品. Apache和MySQL启动并处理请求.
不幸的是,关于Excel的情况并没有改变.不过,我看到了错误.
如前所述,EXCEL COM服务器启动.我可以通过COM实例更改各种设置(例如,禁止对话框)而不会出现问题.
调用此问题时会发生此问题:
$excelComObject->Workbooks->Open( 'PathToXLSFile' );
UPDATE-2 :: 2011-11-30
使用READABLE权限将帐户USER,GUEST和EVERYONE添加到XLS文件的访问控制列表中.没变.
以这种方式修改了应用程序,PHP部分将XLS文件的副本创建为临时文件,并将原始文件的内容移动到此文件中.只是为了确保问题不是由奇数文件/路径名强制的.
但问题仍然存在.
UPDATE-2 :: 2011-12-05
我将以这种方式发送EXCEL COM-Server方法,Excel创建一个空白文件并将其保存到/ tmp.让我们看看,如果Excel甚至无法读取此文件.
解决方法:
在过去(阅读:Vista之前)服务有一个名为“允许服务与桌面交互”的选项,允许服务产生窗口等.启动Vista,这是不再允许的.
我怀疑Excel失败了,因为它无法在此限制下运行.因此,在Win7安装中将其作为服务运行的任何尝试都将失败.
您可以使用Windows XP并允许Apache进程进行桌面交互,出于显而易见的原因我不建议这样做.
我将采用的另一种方法是创建一个PHP脚本,该脚本作为常规进程运行并在无限循环中侦听套接字.在Apache下运行的PHP脚本将通过本地套接字与辅助脚本通信,并使辅助脚本生成Excel.
这可能听起来很复杂,但事实上它并不是很多代码,它解决了你很快就会遇到的问题:你应该只运行一个Excel实例,否则你可能会遇到问题.辅助脚本可以对请求进行排队,逐个切换到Excel,然后在队列中取下一个.
内容总结
以上是互联网集市为您收集整理的当Apache通过Task Planner启动时,在Windows 7上从PHP 5调用Excel到COM失败全部内容,希望文章能够帮你解决当Apache通过Task Planner启动时,在Windows 7上从PHP 5调用Excel到COM失败所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。