2010-02-08 12 views
13

Próbuję uruchomić program w języku Python za pomocą PHP. Oto kod:Uzyskiwanie PHP do uruchamiania skryptu w języku Python

Działa to za pośrednictwem wiersza polecenia, ale nie podczas uruchamiania go w przeglądarce. Używam Apache, więc prawdopodobnie potrzebuje odpowiednich uprawnień? Jestem całkiem nowy w Linuksie i nie mam pojęcia, jak to działa.

Każda pomoc zostanie doceniona!

Edit 1:

próbował użyć proc_open ale nic się nie dzieje. Podałem pełną ścieżkę do skryptu. Sprawił, że skrypt był wykonywalny, ale bez powodzenia. Jakieś inne rzeczy, które mogę wypróbować na serwerze? (Jest to CentOS 5)

+0

Nie rób to tak, jeśli masz jakieś prawdziwe ruchu. Uruchomienie nowego skryptu Pythona (bez mod-python) będzie drogo kosztować. Skonfiguruj oddzielny, długo działający serwer python (serwer xml-rpc?) I wywołaj go przy użyciu IPC, jeśli chcesz skalować. – wisty

+0

Dzięki! Chciałem zrobić to jako demo. Jednak aby ominąć mod_wsgi/mod_python – Abhinav

Odpowiedz

6

Musisz przekazać pełną ścieżkę do skryptu, a także upewnić się, że skrypt jest czytelny dla użytkownika uruchamiającego serwer WWW (co oznacza, że ​​każdy katalog w ścieżce musi być + x do użytkownika).

+0

Zrobiłem obie rzeczy. Nie działa.:( – Abhinav

+0

Aby objąć wszystkie bazy, faktycznie drukujesz $ output, tak? Powinieneś również spróbować dowiedzieć się, czy Twój serwer sieciowy jest uruchomiony w chrootowaniu. – jdizzle

2

Kilka punktów kontrolnych

  • script.py należy przekazać pełną ścieżkę, np /home/abhinav/script.py
  • script.py powinien być wykonywalny chmod +x script.py
+4

"script.py powinien być wykonywalny" nie, jeśli interpreter jest wywoływany. – LiraNuna

+0

Dzięki, i '#!/Usr/local/bin/python' będzie potrzebne w pierwszym wierszu script.py – YOU

+1

Nie potrzebujesz shebang, jeśli użyjesz interpretera do wywołania skryptu (' python ') – ZeissS

6

zrozumiał, co się stało:

  1. domena została skonfigurowana jako wirtualnego hosta i safe_mode PHP została włączona. proc_open, exec, system, passthru itp. nie działają w trybie safe_mode.

  2. Umieść skrypt w katalogu dostępnym dla vhost. Apache nie był w stanie uzyskać dostępu do katalogów spoza katalogu głównego vhosta.

Dzięki za pomoc!

+0

Czy możesz wyjaśnić, jak ustawić uprawnienia w punkcie 2? – slash89mf

0

Aby uzyskać pomocnika CodeIgniter do uruchomienia skryptu Pythona, musiałem umieścić #!/Usr/bin/python w pierwszym wierszu skryptu Pythona, a NIE wywoływać Pythona z exec.

+1 dla również robi chmod + x

moim pomocnikiem wygląda następująco:

<?php 
    function scrape($site, $key, $user_id) 
    { 
     $cmd = str_replace('system/','',BASEPATH).APPPATH."python/spider.py -u $site -k $key -i $user_id"; 
     $resp = exec($cmd, $out); 
     return $out; 
    } 
?> 
Powiązane problemy