运行 Cordova 通过 shell 脚本 - 权限问题

Running Cordova via a shell script - permission problem

我有一个从 PHP 调用的 shell 脚本(称为 test.sh)。在脚本中我只有:

#!/bin/bash
echo $(whoami)
cordova platform version ios

如果我从终端内调用 test.sh 它工作正常并且 returns cordova ios 版本。

如果我尝试用 PHP 调用 test.sh,我得到:

cordova: not found

我已经将 apache 更改为 运行 我的用户名而不是 _www 但这没有用。

任何人都可以指出正确的方向,因为我猜这是一个权限问题?


我现在通过删除 .sh 文件并仅使用 PHP 脚本(在用户 _www 下)进一步简化了它

exec('echo $(whoami) 2>&1', $output, $return_var); 
print_r($output);
echo "<br><br>"; 

putenv("CORDOVA_HOME=/usr/local/bin/cordova");
exec('cordova -v 2>&1', $output, $return_var); 
print_r($output);

注意:whoami 工作正常,但仍未找到 corvoda。

使用 npm 全局安装 Cordova。目前 Cordova 在您的全球主机中不可用。所以首先让它成为全球。

在 OS X 和 Linux:

sudo npm install -g cordova

在 Windows 上:

C:\>npm install -g cordova

为了解决这个问题,我查看了从终端返回的路径和 PHP,它们都使用相同的用户名,但返回了不同的路径详细信息。

添加到PHP后:

putenv("PATH=".getenv('PATH').":/Users/USERNAME/.sdkman/candidates/gradle/current/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands");

putenv("CORDOVA_HOME=/usr/local/bin/cordova");

它开始起作用了。我现在在查找证书时遇到问题,但在调查之后这将是一个不同的问题。