第 1 部分
在我的 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 部分)。
第 2 部分:
现在我需要从 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 来执行同样的事情是失败的。
最佳答案
您需要根据您的输出在 /home/www/html/sip-phone/redminder-call
上设置必要的权限
/home/www/html/sip-phone/reminder-call.sh: 第 3 行:./redminder-call: 没有那个文件或目录
脚本
/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
,这是高度出于安全目的不推荐)
关于PHP - 无法执行我的 BASH 脚本来启动我的 C++ 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48925265/