我在PHP中創建了一個API,它以post請求的形式接收input.csv文件,並且該文件保存在數字海洋服務器的根用戶中。在這個文件的幫助下,我使用PHP中的exec命令在同一臺數字海洋服務器上的root用戶的一個文件夾中運行一個python腳本。運行python腳本後,它將創建另一個名爲output.csv的csv文件,然後由API讀取該文件,並將其作爲對數字海洋服務器處的命中請求的響應。我試圖從一個PHP文件執行Python腳本
但是我面臨的問題是每當我嘗試使用郵遞員或瀏覽器作爲測試的發佈請求來訪問數字海洋服務器的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>";
?>