我觉得我接近答案,但我不在那里。我有一个命令行程序,我从PHP调用。我使用shell_exec(),它在运行Apache服务器的Windows机器上运行。
当我运行脚本时,我在Windows机器的任务管理器中看到该进程已启动,然后立即停止执行任何操作。该进程仍在运行,但它占用大约17 MB的空间,然后PHP脚本就在那里加载。
程序很小(3MB),它可以处理超过这个大小的文件,而且它目前只处理一个28 KB的文件。当我从命令提示符中调用任何一个作为“管理员”时,它们工作正常。当我从shell_exec调用这个时,它没有。我也尝试过exec()和passthru()。
我注意到当PHP调用程序时,它会显示在SYSTEM用户下面。我已检查程序和程序正在处理的文件的“安全”选项卡上的权限,SYSTEM,用户和管理员都可以完全控制它们。
我做错了什么?
如果我需要以“管理员”而不是SYSTEM的身份运行它,我该怎么做?
如果您有疑问,我可以详细说明。
非常感谢,这已经杀了我!
答案 0 :(得分:1)
请在PHP配置中检查安全模式是否已关闭。如果启用了安全模式,则只能在safe_mode_exec_dir中执行可执行文件。要关闭safe_mode,请在文本编辑器中打开php.ini文件并搜索“safe_mode”。确保它已关闭(即safe_mode = Off)
另请尝试其他程序执行功能,例如system()。参考here Apache服务器已作为httpd.conf文件中的用户/组设置运行
答案 1 :(得分:-1)
我有类似的问题。
我的解决方案是:
只需使用管理员凭据启动Apache2服务