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

时间:2020-06-02 14:15:10

标签: php bash cordova sh macos-catalina

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

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

如果我从终端中调用test.sh,它将正常工作并返回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。

2 个答案:

答案 0 :(得分:0)

使用npm全局安装Cordova。目前,Cordova在您的全球主机中不可用。因此,请首先在全球范围内进行。

在OS X和Linux上:

pip uninstall wrapt
pip install wrapt

在Windows上:

sudo npm install -g cordova

答案 1 :(得分:0)

为解决此问题,我查看了从terminal和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");

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