在我的CentOS 7x
中,我的C++
二进制文件位于/var/tmp/sip-dialer/reminder-call
。
使用以下BASH
reminder-call.sh:
#!/bin/bash
cd /var/tmp/sip-dialer
./redminder-call -P sip -u GokuPower -c 1234 -w reminder.myvoipserver.com -x "call003248181919;wakeupItsMorning;sleep3000;hangup"
执行时,整个设置完全正常(第1部分)。
现在我需要从Android,iOS,Tizen和其他Web服务(例如https://cow:mow@myserver.com/run.php
)调用我的BASH脚本。
所以在ZF2, PHP
我有以下内容:
<?php
$output = shell_exec('/home/www/html/sip-phone/reminder-call.sh');
echo "executed";
?>
当我调用PHP
来执行BASH
脚本时,它无法执行以下操作:
/home/www/html/sip-phone/reminder-call.sh: line 3: ./redminder-call: No such file or directory
发生了什么事?手动BASH脚本可以工作,但涉及PHP执行相同的操作失败。
答案 0 :(得分:2)
您需要根据输出
在/home/www/html/sip-phone/redminder-call
上设置必要的权限
/home/www/html/sip-phone/reminder-call.sh: line 3: ./redminder-call: No such file or directory
脚本
/home/www/html/sip-phone/reminder-call.sh
可以使用当前权限使用文件
/var/tmp/sip-dialer/redminder-call
缺失或没有必要的权限。
要检查文件存在,请执行
ls -l /var/tmp/sip-dialer/redminder-call
如果它在那里并检查它的权限。
如果权限有效(例如rwxrwxrwx
),请检查父文件夹是否具有足够的权限来遍历和执行文件。有关父文件夹/文件权限的更多信息是here
根据你的情况
mv /var/tmp/sip-dialer /
chmod -R 777 /sip-dialer
chmod +x /sip-dialer/redminder-call
会做到这一点。问题是/var/
无法访问,因为php的当前权限不足以遍历它(除非你将+ x或777设置为/var
,这是出于安全目的而高度推荐的)