我试图从phpfi执行Python脚本

2024-04-23 10:24:35 发布

您现在位置:Python中文网/ 问答频道 /正文

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

但我面临的问题是,每当我试图用邮递员或浏览器点击数字海洋服务器的URL作为测试的post请求时,我看不到输出.csv在服务器的根用户组中创建的文件。但是我能看到输入.csv正在创建的文件,在命中网址我从分析中可以感觉到的原因是,我创建的phpapi不能运行python脚本来生成输出.csv我对其内容感兴趣的文件。在

还有一件事,因为我从apache服务器访问url,所以它来自www数据用户组,python文件所在的服务器来自根用户组。我写这封信是想知道是否有任何与许可有关的问题。在

我使用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>";
     ?>

Tags: 文件csvecho服务器脚本inputoutputvar