bash — Отказано в доступе при входе в систему / var / log из php-скрипта

Я обнаружил, что мои скрипты crontab не работают должным образом, потому что они не могут писать в / var / log. Я попытался выполнить команду:

sudo / usr / bin / php /var/www/html/iPhone/inarrivo/php/rome/process.php >>
/var/log/romeLoading.log 2>&1

от руки и получил:

-bash: /var/log/romeLoading.log: отказано в разрешении

Разрешения / var / log:

drwxr-XR-х. 13 корень корень 4096 15 назад 16.20.

Если я наоборот выполнить:

sudo touch /var/log/loadRome.log

Я не получаю никакой ошибки вообще.

В чем может быть проблема?

Обратите внимание, что Apache не поставлен на карту: я вызываю эти скрипты из корневого crontab и из оболочки с помощью sudo в качестве теста.

0

Решение

Это проблема с разрешениями, так как файл журнала принадлежит root пользователь и apache убегают www-data, Пытаться chown www-data:www-data /var/log/loadRome.log,

0

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

Наилучшее предположение: у пользователя, работающего с оболочкой, нет прав на запись в /var/log/romeLoading.log и перенаправление stdout (>>) перенаправляется пользователем оболочки, а не пользователем sudo, поэтому доступ запрещен на >>, но не на sudo touch, может быть попробовать

sudo sh -c '/usr/bin/php /var/www/html/iPhone/inarrivo/php/rome/process.php >> /var/log/romeLoading.log 2>&1'

он должен запускать sh от имени root, а root-sh должен выполнять перенаправление с правами root. хотя не проверено.

и в следующий раз, когда вы захотите опубликовать разрешения на отладку, опубликуйте namei -l path/to/file вывод, он дает гораздо больше информации, чем указание самого файла при отладке проблем с разрешениями, так как проблема может быть выше, чем сам файл, например, папка, в которой он находится, или папка, в которой он находится, и т. д. ~ и namei дает вам, рекурсивно, подробную информацию о разрешениях на все из них.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector