[英]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.