macos — запуск программ, установленных с помощью macports, из PHP shell_exec

Я установил antiword на мой Mac (OS X El Capitan), используя Macports:

sudo port install antiword

Теперь я хотел бы использовать его из PHP-программы на веб-сервере, чтобы иметь возможность преобразовывать файлы Word Document для использования в моем веб-приложении. Итак, я попробовал:

$retcode = shell_exec('which antiword');
if ($retcode) {
$outtext = shell_exec('antiword -x db myfilename');
}

Этот подход прекрасно работает на моем сервере Linux (Centos 6), а также на клиенте Linux Ubuntu. Тем не менее, он не работает на Mac.

Я предполагаю, что проблема в том, что Macports установил antiword только для моего пользователя, в то время как Apache работает под другим пользователем, «_www».

Кто-нибудь знает, как можно превратить Macports и / или Apache в представление так, чтобы shell_exec () (или exec () или system () — они все вели себя одинаково) могли найти антислово и использовать его?

-1

Решение

(Спасибо Крису, чей комментарий указал мне правильное направление).

Проблема в том, что антислово должно быть в пути, используемом Apache, когда он выполняет команды оболочки. Вы можете найти это в разделе окружения phpinfo Apache. Моя выглядела так:

/usr/bin:/bin:/usr/sbin:/sbin

Следующая ссылка объясняет, как установить путь для Ubuntu: https://serverfault.com/questions/151328/setting-apache2-path-environment-variable

Тем не менее, это не сработало для меня на OS X El Capitan. Я попытался использовать файл envvars и добавить директиву SetEnv в .htaccess или httpd.conf — ни один из них не сработал.

В конце концов, я перестал пытаться добавить / opt / local / bin в путь, просто скопировал антислово в / usr / bin, и все заработало. Не идеально, так как он не поднимет апгрейды, но это было лучше, чем ничего.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]