php - 在 Controller 内的命令行中执行 python - PHP/CodeIgniter

标签 php python codeigniter

在我的 automation.php Controller 中,我有以下功能:

public function deploy_test() {

      echo json_encode(system("python --version"));
 }

当用户想要部署测试时,通过点击网页中的test按钮,就可以完成这样的任务。 然而,当我点击 test 按钮时,我的输出是:

""

同时,当我使用命令执行相同的功能时:

public function deploy_test() {

    echo json_encode(system("ls -l"));
}

我得到:

total 32
drwxr-xr-x. 15 philippe philippe 4096 Mar  4 16:48 application
drwxrwxr-x.  2 philippe philippe 4096 Mar  4 17:28 css
-rw-r--r--.  1 philippe philippe 6357 Jan 30 11:53 index.php
drwxrwxr-x.  2 philippe philippe 4096 Feb 27 15:38 js
-rw-r--r--.  1 philippe philippe 2496 Jan 30 11:53 license.txt
drwxr-xr-x.  8 philippe philippe 4096 Jan 30 11:53 system
drwxr-xr-x. 12 philippe philippe 4096 Jan 30 11:53 user_guide

有人可以帮我解决这个问题吗?

最佳答案

问题是您的代码或 PHP。

问题出在您的权限上。

php 使用在 apache 的环境变量中设置的权限。

理想情况下设置为:

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

在您的 apache2/httpd conf 文件下。

例如:

尝试运行:

<?= `whoami` ?>

通过您的 shell 和浏览器。

您的浏览器可能会说 www-data 并且 shell 会说您的用户名,或者如果您在 AWS 上 - 默认情况下,您会得到 root

您不必使用 system() ,而是使用 exec()

我们应该接近:

echo json_encode(exec("python --version"));

执行操作需要您设置正确的用户和组。

查找:In the shell, what does " 2>&1 " mean?

所以你的代码应该是:

echo json_encode(exec("python --version 2>&1"));

希望对您有所帮助!

关于php - 在 Controller 内的命令行中执行 python - PHP/CodeIgniter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15214346/

相关文章:

python - 解析包含纳秒的日期时间字符串

php - Facebook和YouTube链接的输入标签

php - 查找预订交叉日期(入住、退房)或每个房间 ID 的相同日期

php - 如何要求正确填写表格才能访问数据?

python - 使用 itertools.cycle() 循环遍历多个列表

php - wp_list_bookmarks 的布局

python - 如何在 scikit-learn 的 `pipeline` 中使用自定义特征选择函数

php - 带有特殊字符的 Json_decode

php - 如何在cakephp中加入

PHP 搜索并替换 img src