Как запустить скрипт perl с несколькими аргументами из php

Моя веб-страница html вызывает php-скрипт для загрузки файлов на сервер с локального компьютера следующим образом.

<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> 

Для обработки с загруженным файлом мой php-скрипт вызывает сценарий оболочки

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

и мой сценарий оболочки состоит из серии скриптов python / perl.

 #!/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 

Теперь проблема заключается в следующем: все скрипты python в сценарии оболочки отлично работали через php. Но скрипт perl не работал.

Когда я запускаю сценарий оболочки сам на своем сервере, все четыре скрипта в оболочке работали отлично. Однако, когда я запускаю сценарий оболочки из php, только скрипт perl не работает.

Не могли бы вы дать мне какие-либо советы по решению этой проблемы?

Большое спасибо!!!

Вероятно, это проблема с разрешениями. Попробуйте настроить файлы, которые perl-скрипт читает на + rw, и посмотреть, работает ли он тогда. Если это так, то вам нужно выяснить, что пользователь работает php (вероятно, пользователь Apache) и убедитесь, что они могут читать / записывать соответствующие файлы. Также убедитесь, что скрипт Perl является исполняемым пользователем php (apache).

Существует вероятность, что пользователь, у которого Apache / PHP работает как (обычно apache), не имеет разрешений для Uploaded_Files/slinput_0.txt или Uploaded_Files/presloutput_0.txt .

Просто угадать, но apache потребуется прочитать для файла slinput_0.txt , прочитать / записать для presloutput_0.txt и read / write / exec для каталога Uploaded_Files

Причина, по которой она работает, когда вы ее пытаетесь, заключается в том, что вы работаете как пользователь и, скорее всего, имеете права писать на веб-сайт.

Я бы попробовал
senseLearner.pl -i Up … -pos> /var/log/senseLearner.log 2> & 1
(и посмотрите на этот файл журнала после)

и, возможно, вы можете попытаться указать интерпретатор, как
/ path / to / perl senseLearner.pl -i Up … -pos> /var/log/senseLearner.log 2> & 1