Bir Python komut dosyası çalıştırmak için PHP Başlarken

4 Cevap php

Ben PHP kullanarak bir Python programı çalıştırmak için çalışıyorum. İşte kod

$command = '/usr/local/bin/python script.py file';
$temp = exec($command, $output);

Tarayıcısı aracılığıyla çalışırken bu komut satırı aracılığıyla değil çalışır. Ben bu yüzden muhtemelen doğru ayrıcalıkları gerekiyor Apache kullanıyorum? Linux için oldukça yeni ve bu çalışma almak için nasıl hiçbir fikrim yok.

Herhangi bir yardım mutluluk duyacağız!

Edit 1:

proc_open kullanmaya çalıştı ama hiçbir şey olmuyor. Ben komut dosyası tam yolunu verdi. Komut dosyası yürütülebilir ama hayır şans yaptı. Ben sunucu üzerinde deneyebilirsiniz başka şeyler? (Bu bir CentOS 5 var)

4 Cevap

Siz komut için tam yolunu geçmek gerekir ve ayrıca komut (yolundaki her dizin + x web kullanıcı olmalıdır anlamına gelir) web sunucusu çalıştıran kullanıcı tarafından okunabilir olduğundan emin olmak gerekir.

Yanlış ne olduğunu anladım:

  1. Alan bir sanal konak olarak kuruldu ve PHP'nin safe_mode etkin oldu. proc_open, exec, sistem, passthru vb sanırım safe_mode altında çalışmaz.

  2. Sankondan tarafından erişilebilir dizinde komut koydu. Apache vhost belge kök dışında dizinleri erişmek mümkün değildi.

Yardımın için teşekkürler!

Birkaç kontrol noktaları

  • script.py tam yolunu geçmesi gerektiğini, örneğin, /home/abhinav/script.py
  • script.py çalıştırılabilir olmalı, chmod +x script.py

Bir python komut dosyası çalıştırmak için CodeIgniter yardımcısı olsun, benim python script ilk satırında #! / Usr / bin / python koymak zorunda, ve exec pitonu aramak değil.

+1 Ayrıca chmod yapmak için + x

Benim yardımcı bu gibi görünüyor:

<?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;
    }
?>