PHP cli командной строки ограничение safe_mode - PullRequest
3 голосов
/ 19 января 2011

Я использую платформу Kohana (3.0.9), которая генерирует ежедневные журналы.Я хочу отправить файл журнала по почте, если он был создан за день до запуска сценария CRON, но после нескольких дней попыток я не могу понять, как отключить safe_mode в режиме PHP CLI.

Когда я работаюМой сценарий в Интернете, нет проблем.Но я хочу запустить скрипт как задачу 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]

Я уже отключил БЕЗОПАСНЫЙ РЕЖИМ на моей панели управления 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', ноКаталог, представляющий каждый месяц с файлами ежедневного журнала, всегда выдает ошибку.

Ответы [ 2 ]

15 голосов
/ 22 июня 2011

В настоящее время вы можете планировать выполнение php-скрипта из пользовательского интерфейса следующим образом:

plesk schedule cron url php script

Если вам все еще нужно выполнить скрипт из командной строки, обратите внимание, что бинарные файлы Plesk PHP находятся в:

# 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 по умолчанию с включенным безопасным режимом, что означает, что когда вы устанавливаете cron в Plesk, который требует PHP, он будет иметь ограничения, которые вы не испытываете из оболочки или из Интернета.

Итак, вы используете переопределение параметра CLI /etc/php.ini, например:

/usr/bin/php -q -d safe_mode=Off /var/www/vhosts/path-to-your-php-file.php
1 голос
/ 26 января 2011

Вы отключили safe_mode в php.ini для CLI?

Чтобы найти местоположение этого файла, выполните следующую команду php --ini.Найдите в этом файле safe_mode и измените строку на safe_mode = Off.

...