微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP / Ubuntu – QxcbConnection:无法连接到显示中止

我在我的apache / ubuntu服务器上使用PHP脚本来调用一个bash脚本,该脚本触发一个python脚本为参数的应用程序(IDAPro).

PHP代码

chdir('/var/www/dashboard/team/static/sql');
$output = exec('sudo -u rohan ./start.sh');

现在,如果我从终端运行PHP文件,上面的代码工作正常 – 但只有当我以root用户身份运行它时.不用说,如果我直接执行bash文件,它也会运行.

但是当我在浏览器上运行PHP文件时,它不起作用,我在apache错误日志中收到以下错误

QXcbConnection: Could not connect to display
Aborted

我知道Apache / PHP运行为’www-data用户(使用’whoami’来验证),这就是为什么我在我的exec中有sudo.我已经调整并修改了两个用户的权限无济于事.当我从终端运行PHP文件作为’www-data用户时,它不会抛出任何错误但除了在脚本的开头和结尾显示随机echo标签以进行调试之外什么都不做.

我是linux新手,所以非常感谢任何帮助.

最佳答案:

好的,我终于设法解决了.

问题不在于权限,而在于环境变量.

我必须在我的bash脚本中包含以下行

export disPLAY=':0.0'

请注意,在终端中设置变量并运行脚本不起作用.该行必须在脚本中.

我假设这是因为如果您以root用户之外的任何用户身份运行脚本,则不会设置disPLAY变量,这是Apache / PHP的情况,其中脚本作为’www-data用户执行.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐