我正在尝试从php脚本(即sendMsg.php)运行Linux可执行文件。可执行文件(即 msgr)使用 SYS V msg 队列与另一个正在运行的进程进行通信。
发送消息.php
<?php
exec('./msgr 0987654321 1234 2>&1', $output, $return_var);
var_dump($return_var);
var_dump($output);
?>
主教 c
int msqid;
key_t key;
if ((key = ftok("/usr/local/bin/app", 'k')) == -1) {
perror("ftok");
exit(1);
}
if ((msqid = msgget(key, 0644)) == -1) {
perror("msgget");
exit(1);
}
当我从终端运行脚本时,它工作正常,但是当我从浏览器运行它时(通过 ajax 调用或其他方式),我收到一个错误:
msgget: Permission denied
看起来文件权限存在一些问题。我该如何解决这个问题?
您可能希望引用运行执行的所有者。请参阅 PHP.net
所有者应该是www-data,但这只能用于linux-debian/ubuntu系统。
否则须藤卒和 sudo chmod 应该可以解决您的问题