微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在控制器内的命令行中执行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"));

希望能帮助到你!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐