[英]PHP exec,system,shell_exec not working with wget on ubuntu machine
[英]PHP - exec,shell_exec,system not working
我读了很多类似的问题,但对我没有任何帮助
我使用wamp 2.2,Apache 2.0,PHP V5.3.8
safe_mode = off-我试图从php.ini中删除了disabled_functions
exec("chrome.exe google.com");
什么也没有发生,当我尝试
exec("calc");
尽管我将apache服务的用户更改为管理员,并且我使用
exec("whoami");
问题出在哪儿?
CMD和php shell的环境路径可能不同。 您要么必须提供文件的完整路径,要么首先在php中export
chrome.exe
的路径。
另外,我相信chrome.exe
打开页面需要XServer,php无法在shell中打开图形界面。 这些命令不会作为父项传递给实际的shell,因此php文件无法为您“启动”应用程序。
请阅读exec函数的详细信息: PHP exec
Reference
也可以尝试添加2> errors.txt
以查看程序执行中存在的错误(如果有)。
-
该程序需要知道要连接到哪个X服务器,并且需要具有连接到该服务器的权限。 您可以使用DISPLAY环境变量指定X服务器。 如果从X的终端或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接口)
停止Apache作为服务运行。
Windows运行服务时,它不是直接以启动服务器或进行管理的用户身份运行,因此很可能是在服务环境中启动chrome,因此您不会看到它加载在桌面上,有两种解决方法
停止apache服务浏览到您的apache目录并手动运行httpd.exe,然后尝试运行脚本,或者如果不需要通过Web请求运行该脚本,则它不使用浏览器中的任何内容,则可以允许它与c:\\wamp\\php\\php.exe yourfile.php
(您的php路径应替换为c:\\wamp\\php
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.