2011-01-19 6 views
3

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

Когда я запускаю свой сценарий в Интернете, проблем нет. Но я хочу, чтобы запустить сценарий в качестве задачи CRON на моем сервере Plesk 9.5.2 (или в командной строке как корневой пользователь) Я получаю следующее сообщение об ошибке:

ErrorException [ 2 ]: dir(): SAFE MODE Restriction in effect. The script whose uid is 10001 is not allowed to access /var/www/vhosts/mydomain.com/subdomains/mysubdomain/httpdocs/application/logs/2011/01 owned by uid 48 ~ APPPATH/classes/controller/ajax.php [ 181 ]

Я Allready положил 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' , но каталог, представляющий каждый месяц с ежедневными файлами журнала, всегда дает ошибку.

ответ

15

В настоящее время вы можете запланировать PHP выполнение сценариев из пользовательского интерфейса, как это:

plesk schedule cron url php script

В случае, если вы по-прежнему необходимо выполнить сценарий с помощью командной строки обратите внимание, что 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 

Оригинальный ответ:

Я знаю, что это несколько мо nths old, но для следующего человека, который сталкивается с проблемой при использовании 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 
+0

Я люблю тебя ck_ !! Ты спасешь мой день (и мои волосы тоже!) – Arnaud

1

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

Адрес местонахождения: php --ini. Найдите в этом файле safe_mode и измените строку на safe_mode = Off.