【发布时间】:2015-05-11 01:40:59
【问题描述】:
我正在尝试从 php 脚本(即 sendMsg.php)运行 linux 可执行文件。 可执行文件(即 msgr)使用 SYS V msg 队列与另一个正在运行的进程进行通信。
sendMsg.php
<?php
exec('./msgr 0987654321 1234 2>&1', $output, $return_var);
var_dump($return_var);
var_dump($output);
?>
msgr.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
文件权限似乎有些问题。我该如何解决这个问题?
【问题讨论】:
-
也许通过更改权限?
-
您能详细说明@Dagon 吗?我已授予 msgr 可执行权限。
标签: javascript php c linux message-queue