繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM