簡體   English   中英

linux php exec()msgget:權限被拒絕

[英]linux php exec() msgget:Permission Denied

我正在嘗試從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

似乎文件權限存在問題。 我該如何解決?

您可能想要引用誰在運行執行的所有者。 參考PHP.net

所有者應該是www-data,但是只能用於linux-debian / ubuntu系統。

否則sudo chown和sudo chmod應該可以解決您的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM