在控制器内的命令行中执行python – PHP / CodeIgniter

在我的automation.PHP控制器中,我有以下功能

public function deploy_test() {

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

用户想要部署测试时,通过单击网页中的测试按钮,他将能够完成这样的任务.
但是,当我单击测试按钮时,我的输出是:

""

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

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的env-vars中设置的权限.

理想情况下设置为:

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"));

希望能帮助到你!

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...