Roh*_*ood 6 php linux apache bash ubuntu
我在我的apache/ubuntu服务器上使用php脚本来调用一个bash脚本,该脚本触发一个以python脚本为参数的应用程序(IDAPro).
PHP代码
chdir('/var/www/dashboard/team/static/sql');
$output = exec('sudo -u rohan ./start.sh');
Run Code Online (Sandbox Code Playgroud)
现在,如果我从终端运行PHP文件,上面的代码工作正常 - 但只有当我以root用户身份运行它时.不用说,如果我直接执行bash文件,它也会运行.
但是当我在浏览器上运行PHP文件时,它不起作用,我在apache错误日志中收到以下错误:
QXcbConnection: Could not connect to display
Aborted
Run Code Online (Sandbox Code Playgroud)
我知道Apache/php运行为'www-data'用户(使用'whoami'来验证),这就是为什么我在我的exec中有sudo.我已经调整并修改了两个用户的权限无济于事.当我从终端运行php文件作为'www-data'用户时,它不会抛出任何错误但除了在脚本的开头和结尾显示随机echo标签以进行调试之外什么都不做.
我是linux新手,所以非常感谢任何帮助.
好吧,我终于成功解决了。
问题不在于权限,而在于环境变量。
我必须在 bash 脚本中包含以下行
export DISPLAY=':0.0'
Run Code Online (Sandbox Code Playgroud)
请注意,在终端中设置变量并运行脚本不起作用。该行需要位于脚本内部。
我认为这是因为如果您以 root 以外的任何用户身份运行脚本,则不会设置 DISPLAY 变量,这就是 Apache/PHP 中脚本以“www-data”用户身份执行的情况。
| 归档时间: |
|
| 查看次数: |
14975 次 |
| 最近记录: |