我试图从PHP文件执行Python脚本

时间:2017-06-29 17:53:53

标签: php python api server digital-ocean

我在PHP中创建了一个API,它以post请求的形式接收input.csv文件,该文件保存在数字海洋服务器的root用户中。在这个文件的帮助下,我在PHP中使用了exec命令来运行一个python脚本,该脚本保存在同一个数字海洋服务器中root用户的一个文件夹中。在运行python脚本之后,它将创建另一个名为output.csv的csv文件,然后由API读取,并作为对数字海洋服务器上的命中请求的响应。

但我遇到的问题是,每当我尝试使用邮递员或浏览器作为测试的后期请求点击数字海洋服务器的URL时,我看不到在root用户组中创建的output.csv文件的服务器。但是我可以看到正在创建的input.csv文件,它是在击中url时作为参数传递的。我可以从我的分析中感觉到的原因是我创建的php api无法运行生成的python脚本我感兴趣的output.csv文件。

我正在从apache服务器访问url,因此它来自www-data用户组,而python文件所在的服务器来自root用户组。我刚刚写了这篇文章,以了解是否存在任何与权限相关的问题。

我正在使用exec命令来执行python脚本。我的api的代码在下面给出任何帮助将不胜感激。

<?php
        $input_file_content = base64_decode($_POST['file_contents']);
        print_r($input_file_content);
        $python_file = "/var/www/html/selenium/scrap.py";
        $input_file = dirname(__FILE__) . "/input.csv";
        $output_file ="/var/www/html/selenium/output2.csv";
        file_put_contents($input_file, $input_file_content);
        exec("whoami 2>&1", $output, $return_var);
        print_r($output);
        exec("sudo /root/anaconda2/envs/venv/bin/python " . $python_file);
                    echo "<final_string>";
        echo base64_encode(file_get_contents($output_file));
        echo "</final_string>";
     ?>

1 个答案:

答案 0 :(得分:0)

这是重复的帖子。请参阅Execute Python script from Php

相关问题