Из PHP-скрипта я хочу запустить Perl-скрипт. Я могу сделать это с терминала (как пользователь root), но при запуске из моего приложения (пользователь www-data) я не могу.
При разработке приложения на локальном хосте у меня тоже все получалось, но проблема возникла, когда я переключился на другой сервер.
Моя веб-страница вызывает сценарий PHP с запросом AJAX POST, который отлично работает для других моих сценариев PHP, которые не вызывают вызовы Perl.
Я безуспешно пробовал следующие команды в своем PHP-скрипте:
system("/filepath/file.pl");
exec("/filepath/file.pl");
passthru("/filepath/file.pl");
Журналы Apache на сервере, на котором размещено мое приложение, показывают следующую ошибку:
sh: /file.pl: not found
Запустив следующий код на моем сервере, я вижу, что веб-пользователь рассматривается как www-данные:
ps aux | grep apache
Для проверки я также установил разрешения для всех файлов и каталогов, используемых моим приложением, чтобы разрешить любой тип доступа любому пользователю, используя chmod 777.
Обратите внимание: мое приложение доступно только для определенных пользователей (я использую файл .htaccess для установки этих разрешений и требую от пользователя входа в систему), поэтому, если есть способ изменить то, как сервер видит этого пользователя (с www-data на учетные данные вошедшего в систему пользователя), то, возможно, это поможет - как мне это сделать?
/filepath
запустит КОРЕНЬ файловой системы вашего диска, например.c:\
. если/filepath
является корнем вашего веб-сайта, это не сработает. вам нужно включить весь путь:/home/user/sites/example.com/public_html/filepath/file.pl
- тип вещь - person Marc B   schedule 24.08.2015'not found'
указывает на проблему с правами доступа? - person Don't Panic   schedule 24.08.2015