PHP exec () никогда не запускается - PullRequest
1 голос
/ 21 января 2010

Я считаю, что это проблема с разрешениями, но не знаю, как ее исправить.

У меня есть скрипт php - mainscript.php, который вызывает:

$scriptCall = "/usr/bin/php wrap_prep.php 2>&1 &";

При запуске mainscript.php wrap_prep.php никогда не выполняется. Однако, когда я захожу на свой веб-сервер от имени пользователя root и запускаю php wrap_prep.php 2>&1 &, он работает нормально.

Я установил оба сценария для владельца и группу для моего пользователя Apache, а также 755 разрешений.

Я недавно перекомпилировал PHP для добавления библиотеки (не уверен, имеет ли это какое-либо отношение к новой проблеме).

Ответы [ 3 ]

1 голос
/ 21 января 2010

Прежде всего, вы должны просто вывести то, что exec() дает команда. Должно быть сообщение об ошибке, не смотря ни на что.

Во-вторых, тот факт, что вы находитесь в скрипте PHP, не обязательно означает, что пользователь, под которым работает PHP, может вызывать бинарный файл PHP на /usr/bin/php. Можете ли вы попробовать изменить права этого?

Если это не поможет, проверьте, для какого пользователя работает ваш PHP-скрипт. Насколько я знаю, posix_getuid () является наиболее точным инструментом для выяснения этого. Убедитесь, что права доступа, которые вы устанавливаете, действительно идентичны пользователям, для которых вы устанавливаете права.

Да, и комментарий Тило, приведенный выше, является наиболее очевидной вещью и должен быть проверен первым:)

0 голосов
/ 25 февраля 2011

При работе в Windows (я знаю, что OP нет), проблема может быть необходима, чтобы обернуть всю команду в набор кавычек.

Это объясняется здесь

0 голосов
/ 21 января 2010

Я бы проверил, чтобы ваш хост не отключил exec полностью. Я верю, что phpinfo() говорит вам, если это так.

...