作者o55665516 (elephant)
看板PHP
標題[請益] PHP執行Python requests套件
時間Wed May 20 01:16:24 2020
請問版上各位高手
我用的環境是google GCP Ubuntu
用PHP去exec簡單的python是print的出來
例如以下
[execpython.php]
<?PHP
$command = escapeshellcmd('python test.py');
$output = shell_exec($command);
echo $output;
?>
[test.py]
a = 1
print( a + 2)
print(1,2,3)
但如果是去call含有request套件的py就完全無反應,但在終端機執行是OK
例如以下這支(URL有改成正常網站)
https://imgur.com/NeIsVx5
小弟有稍微爬一下,好像是說Apache環境變數要改!?不太曉得確切原因...
麻煩各位大神了~先叩謝大家
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.137.82.144 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PHP/M.1589908586.A.2C5.html
1F:→ ddoll288: 因為php的user跟你直接下cmd的shell不一樣,環境變數也 05/20 09:06
2F:→ ddoll288: 不一樣, 所以python沒辦法找到package, 你要告訴python 05/20 09:07
3F:→ ddoll288: request套件的位置在那邊才能跑 05/20 09:08
5F:推 GALINE: 是說有點好奇,為何不用純 PHP 的方案? 05/20 11:29
6F:→ GALINE: 像是 php-html-parser,雖然人氣是比漂亮湯還要低... 05/20 11:30
7F:→ ddoll288: 因為python爬蟲比較好寫,尤其是多執行緒狀況下 05/20 14:14
8F:→ ddoll288: php大多跑web,通常是靠httpd來擠多執行緒,自己的多執行 05/20 14:17
9F:→ ddoll288: 緒很難寫,加上大數據風行,所以後台任務大多用py寫了 05/20 14:19
11F:→ ddoll288: pthreads已死,parallel再生,PCNTL不知所云 05/20 14:26
12F:→ ddoll288: py的threading就簡單多了,反正php的多執行緒就是爛 05/20 14:28
13F:推 GALINE: pcntl 就...老派...(遠目 05/20 18:39
14F:→ GALINE: 不過如果是這個方向,直覺是不會從網頁發動 05/20 18:40
15F:推 yanli2: python跑虛擬機嗎? 有的話你py檔要指定環境 05/21 04:42
16F:→ LinLinJim: 用Flask或Django包成api再用呢 05/22 02:01
17F:→ chaoms: Swoole呢? 06/23 14:27