PHP - exec,shell_exec,系统无法正常工作

时间:2012-06-29 22:30:54

标签: php exec

我读了很多类似的问题,但没有任何关系与我合作

即时使用wamp 2.2,Apache 2.0,PHP V5.3.8

safe_mode = off - disabled_functions从php.ini中删除我正在尝试执行

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

当我尝试

时没有任何反应
exec("calc");

windows显示了在不同用户中执行calc的奇怪消息,尽管我将用户的apache服务更改为Administrator并且我使用

验证用户
exec("whoami");

问题出在哪里?

3 个答案:

答案 0 :(得分:0)

CMD和php shell的环境路径可能不一样。 您要么必须提供文件的完整路径,要么export首先在chrome.exe中显示chrome.exe的路径

另外,我相信2> errors.txt打开一个页面需要XServer,php无法在shell中打开图形界面。这些命令不会作为父命令传递给实际的shell,因此php文件无法为您“启动”应用程序。

请阅读exec函数的具体内容: PHP exec Reference

同时尝试添加exec()以查看执行程序时的错误。

-

程序需要知道要连接的X服务器,并且需要具有连接到该服务器的权限。使用DISPLAY环境变量指定X服务器;如果您从终端运行PHP程序,通常会自动设置 X,或来自GNOME面板或类似的东西;但是,如果您以其他方式运行PHP脚本,则可能无法知道要连接的X服务器。

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

参考:http://bytes.com/topic/php/answers/838364-cant-launch-graphical-apps-php-exec-ubuntu-8-04-system (我知道该链接适用于Linux,并且不会为Windows提供完全相同的解决方案,但{{1}}仍需要知道要引用哪个X接口)

答案 1 :(得分:0)

停止Apache作为服务运行。

当Windows运行服务时,它不会直接作为启动服务器或管理的用户直接运行,因此很可能在服务环境中启动chrome,因此您不会在桌面上看到它加载有两种方法绕过这个

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

答案 2 :(得分:0)

试试 PHP 脚本?

<?php shell_exec('notepad.exe');?> 

它正在工作。