PHP - 无法执行我的BASH脚本来启动我的C ++二进制文件

时间:2018-02-22 10:37:44

标签: php bash apache centos

第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执行相同的操作失败。

1 个答案:

答案 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,这是出于安全目的而高度推荐的)