2010-12-21 89 views
1

我觉得我很接近答案,但我并不在那里。我有一个我从PHP调用的命令行程序。我使用shell_exec(),它运行在运行Apache服务器的Windows计算机上。在Windows上以不同的用户身份运行shell_exec

当我运行该脚本时,我在Windows机器上的任务管理器中看到该进程已启动,然后立即停止执行任何操作。该过程仍在运行,但占用大约17 MB的空间,然后PHP脚本就在那里加载。

程序很小(3MB),它可以很好地处理文件大小,它目前只处理一个28 KB的文件。当我从命令提示符中以“管理员”身份调用其中一个时,它们工作正常。当我从shell_exec调用这个时,它不会。我也尝试过exec()和passthru()。

我注意到,当PHP调用程序时,它显示在SYSTEM用户下。我已经检查了程序和正在被程序处理的文件的安全选项卡上的权限,并且SYSTEM,用户和管理员都可以完全控制它们。

我在做什么错?

如果我需要将它作为'管理员'而不是SYSTEM运行,那么我该怎么做?

如果您有任何疑问,我可以详细阐述。

非常感谢你,这已经杀了我!

+0

既然是一个命令行程序,最好的办法是跳过了Apache,通过管理员执行。通常,apache不以root /管理员身份运行 – ajreal 2010-12-29 23:53:39

回答

1

请检查PHP配置中的安全模式是否关闭。如果安全模式打开,则只能在safe_mode_exec_dir内执行可执行文件。要关闭safe_mode,请在文本编辑器中打开php.ini文件并搜索“safe_mode”。确保它已关闭(即safe_mode =关闭)

另请尝试其他程序执行功能,例如system()。 Refere here Apache服务器在httpd.conf文件中以用户/组设置运行

-1

我有类似的问题。

我的解决办法是:
刚开始的Apache2服务具有管理员凭据