我在我的apache / ubuntu服务器上使用PHP脚本来调用一个bash脚本,该脚本触发一个以python脚本为参数的应用程序(IDAPro).
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] 举报,一经查实,本站将立刻删除。