gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:35:58 25 4
gpt4 key购买 nike

在我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com