2012-06-29 129 views
1

我看了这么多类似的问题,但没有使用WAMP 2.2,Apache 2.0,在PHP V5.3.8PHP - EXEC,了shell_exec,系统不能正常工作

的safe_mode =了与我的作品

IM - 从删除disabled_functions php.ini中我试图给exec

exec("chrome.exe google.com"); 

没有任何反应,当我尝试

exec("calc"); 

窗口显示消息怪异在不同的用户虽然我改变了用户对apache的服务管理员和我确认使用

exec("whoami"); 

哪里的问题的用户执行,计算的?

+0

在您当前的工作目录或PATH变量中有'chrome.exe'吗? – sandradev

+0

在CMD上执行chrome.exe google.com时效果很好 –

+0

我不得不问你如何以管理员身份运行Apache,你不是作为服务运行吗?和什么操作系统作为Windows Vista/7没有一个管理用户 –

回答

0

CMD和php shell的环境路径可能不一样。 要么你得给文件的完整路径,或exportchrome.exe路径在PHP第一

而且,我相信,chrome.exe打开一个网页需要的XServer,PHP不能在外壳打开图形界面。这些命令不会作为父项传递给实际shell,因此php文件无法为您“启动”应用程序。

exec函数的请阅读细节: PHP exec Reference

也可以尝试加入2> errors.txt,看看有什么是错误,如果任何程序的执行。

-

程序需要知道要连接到什么X服务器,它需要有权限连接到该服务器。您使用DISPLAY环境变量指定X服务器;如果您正在从 X的终端运行PHP程序,或者从GNOME面板或类似的程序运行PHP程序,则通常会自动设置该程序;但是,如果您以其他方式运行PHP脚本,它可能不会知道要连接到哪个X服务器。

X有多种方式指定连接到服务器的权限,但最常用的方法是在用户主目录中使用名为“.Xauthority”的文件。由于只有在X服务器上登录的用户才能读取此文件,因此他们是唯一可以运行GUI程序的用户。因此,如果您以与在X服务器上登录的用户相同的用户身份启动PHP用户,则不应该有任何权限问题。但是,如果PHP程序作为其他用户运行,则必须授予该用户访问X服务器的权限。

参考:http://bytes.com/topic/php/answers/838364-cant-launch-graphical-apps-php-exec-ubuntu-8-04-system (我知道该链接是Linux,不会有针对Windows完全相同的解决方案,但仍exec()需要知道指其中X接口)

+0

我试过chrome.exe的完整路径没有任何反应 –

+3

Windows中通常没有X服务器。 –

+0

好吧,我明白了..我试图让打开铬的jar文件,它的工作很好,但是当我从PHP调用它什么都没有发生..是因为jar文件考虑为GUI程序或有什么问题? –

0

停止Apache作为服务运行。

当Windows运行一个服务时,它不会像启动服务器或管理的用户那样直接运行,因为它可能会在服务环境中启动chrome,因此您不会在桌面上看到它加载的方式有两种方式解决此问题

停止apache服务浏览到您的apache目录并运行httpd.exe manualy然后尝试您的脚本它应该工作,或者如果它不需要通过Web请求运行,因此它不使用浏览器中的任何内容你可以允许它与c:\wamp\php\php.exe yourfile.php一起工作(你的php路径应该被替换为c:\wamp\php