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

标签 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 来执行同样的事情是失败的。

最佳答案

您需要根据您的输出在 /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/

相关文章:

php - 使用PHP的“Notice: Undefined variable”,“Notice: Undefined index”和“Notice: Undefined offset”

使用 https 重写 Apache 2.4 url

apache - 将文件 url 重定向到 .htaccess 中的另一个页面

bash - 取消 sudo askpass 请求

bash - 如何在 Groovy 中进行 shell 扩展?

linux - 如何对多个文件夹和子文件夹中的文件运行 dos2unix 命令?

java - jvm apache httpClient.execute(httpMethod, context) 的 "networkaddress.cache.negative.ttl"属性是否会影响它?

php - Doctrine 查询错误未知列

php - Mysql - 查找等于 $variable 的字段值回显该行的另一个字段值

php - HipHop编译器无法识别对象$ this变量