Php birkaç argümanla perl script çalıştırmak için nasıl

1 Cevap php

Benim html web sayfası aşağıdaki gibi bir yerel bilgisayardan sunucuya dosya yüklemek için bir php komut dosyası çağırır.

<form enctype="multipart/form-data" action="upload.php" method="POST">
<p><b><h3>  <font color="#003366"> (1) Upload your reading text file.  </font> 
</h3> </b> </p>
<INPUT type="file" name="uploaded" size="50" >
<br/>
<input type="submit" name="files" value="upload">
</form> 

Bir yüklenen dosya ile işlemek için, benim php script bir kabuk komut dosyası çağırır

$output=system('/bin/sh connector_0.sh');  

ve betiğimiz Python / Perl programlarım bir dizi oluşur.

#!/bin/sh

python main_senselearner_final_0.py 

senseLearner.pl -i Uploaded_Files/slinput_0.txt -o Uploaded_Files/presloutput_0
.txt -model modelNNCollocations -model modelJJCollocations -model modelVBColloc
ations -pos

python smutngslout_0.py 

python genhtml_0.py 

Şimdi sorun şu: kabuk tüm python komut php iyi çalıştı. Ama perl komut işe yaramadı.

Benim sunucu kendime göre kabuk komut dosyasını çalıştırdığınızda, kabuk dört komut mükemmel çalıştı. Ben php gelen kabuk komut dosyasını çalıştırdığınızda, ancak, sadece perl komut çalışmaz.

Bana bu sorunu çözmek için herhangi bir ipucu verebilir misiniz?

Çok teşekkürler!

1 Cevap

Apache / PHP (genellikle apache) olarak çalıştıran kullanıcı Uploaded_Files/slinput_0.txt veya Uploaded_Files/presloutput_0.txt için izinleri yok bir olasılık vardır.

Sadece tahmin ama apache slinput_0.txt dosyası için okumak gerekir, presloutput_0.txt için okuma / yazma ve dizin / yazma / okuma exec Uploaded_Files

Bunu denediğinizde çalışır nedeni sizin kullanıcı olarak çalışan ve büyük olasılıkla webroot yazmak için izniniz vardır edilir.