linux php exec() msgget:Permission Denied


linux php exec() msgget:Permission Denied

我正在尝试从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 应该可以解决您的问题