Я использую структуру Kohana (3.0.9), которая генерирует ежедневные журналы. Я хочу отправить файл журнала, если он был сделан за день до того, как CRON запускает скрипт, но после нескольких попыток дней я не могу понять, как отложить safe_mode в PHP CLI modus.
Когда я запускаю свой скрипт в Интернете, проблем нет. Но я хочу запустить сценарий как задачу CRON на моем сервере Plesk 9.5.2 (или в командной строке как пользователь root). Я получаю следующую ошибку:
ErrorException [2]: dir (): РЕЖИМ БЕЗОПАСНОГО РЕЖИМА. Сценарий, которому uid равен 10001, не имеет права доступа к /var/www/vhosts/mydomain.com/subdomains/mysubdomain/httpdocs/application/logs/2011/01, принадлежащему uid 48 ~ APPPATH / classes / controller / ajax.php [ 181]
Я уже отключил SAFE MODE на панели управления Plesk, которая отлично работает для веб-запроса, но не включена в командной строке или в качестве задачи CRON.
Я использую следующий код, чтобы проверить, работает ли он:
$d = dir(APPPATH.'logs/2011/01/'); echo "Handle: " . $d->handle . "\n"; echo "Path: " . $d->path . "\n"; while (false !== ($entry = $d->read())) { echo $entry."\n"; } $d->close();
Я могу прочитать каталог APPPATH.'logs / ', а также каталог APPPATH.'logs / 2011', но каталог, каждый месяц, с ежедневными файлами журнала, всегда дает ошибку.
В настоящее время вы можете запланировать выполнение скрипта php из UI следующим образом:
Если вам еще нужно выполнить скрипт через командную строку, обратите внимание, что двоичные файлы PHP Plesk размещены в:
# 7.0 /opt/plesk/php/7.0/bin/php # 5.6 /opt/plesk/php/5.6/bin/php # 5.5 /opt/plesk/php/5.5/bin/php # and so on
Оригинальный ответ:
Я знаю, что это несколько месяцев, но для следующего человека, который сталкивается с проблемой при использовании Plesk и cron и PHP, вот ответ.
В то время как Plesk запускает cron как ROOT, он также запускает PHP по умолчанию с безопасным режимом ON, а это значит, что при настройке cron в Plesk, который нуждается в PHP, у него будут ограничения, которые вы не получаете из оболочки или из Интернета ,
Так что вы используете переопределение CLI /etc/php.ini, например:
/usr/bin/php -q -d safe_mode=Off /var/www/vhosts/path-to-your-php-file.php
Вы отключили safe_mode в php.ini для CLI?
Вы можете найти расположение этого файла, выполнив следующую команду php --ini
. Найдите safe_mode
в этом файле и измените строку на safe_mode = Off
.