Page 1 of 1

CRON: Permission denied

Posted: Mon Apr 09, 2018 8:17 am
by TITAN-UZ
Здравствуйте!
Как решит эту проблему с CRON :

Code: Select all

PHP warning: file_put_contents(/ga.js): failed to open stream: Permission denied
CRON

Code: Select all

/usr/bin/php -f /home/admin/web/rsg.uz/public_html/assets/components/cronmanager/cron.php
JS.PHP

Code: Select all

<?php
// CRON для автоматического обновления файлов стороних сервисов и счетчиков.
function downloadJs($file_url, $save_to, $end_block = false)
{
$content = file_get_contents($file_url);
file_put_contents($save_to, $content);
    if(file_put_contents($save_to, $content)){
        $file = basename($file_url);
        $size = filesize($save_to);
        $date = date('d/m/Y H:i:s');
        $eol = !$end_block ? PHP_EOL : PHP_EOL.PHP_EOL;
        $log = $date.' | '.$file.' | '.$size.$eol;
        file_put_contents($_SERVER['DOCUMENT_ROOT'].'/logs/loguploads.txt', $log, FILE_APPEND);
    }
}
// Для скриптов без расширения
// downloadJs('http://code.jivosite.com/script/widget/NuT1gBLsC6', realpath($_SERVER['DOCUMENT_ROOT']./media/js'). '/NuT1gBLsC6');

// Метрика
downloadJs('https://mc.yandex.ru/metrika/watch.js', realpath($_SERVER['DOCUMENT_ROOT'].'/js').'/watch.js');
// Google Analytics
downloadJs('https://google-analytics.com/analytics.js', realpath($_SERVER['DOCUMENT_ROOT'].'/js').'/analytics.js');
downloadJs('https://google-analytics.com/ga.js', realpath($_SERVER['DOCUMENT_ROOT'].'/js').'/ga.js');
//mail.ru

?>
JS CHMOD 777

Re: CRON: Permission denied

Posted: Mon Apr 09, 2018 11:19 am
by demian
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/logs/loguploads.txt', $log, FILE_APPEND);


при запуске из консоли(crond) директива $_SERVER['DOCUMENT_ROOT'] не работает, переменная актуальна только для веб сервера.

вариант 1: необходимо использовать системные константы для определения пути __FILE__ или __DIR__ относительно обработку.
по хорошему необходимо добавить проверку запустился файл с консоли или через http

вариант 2: использовать curl 'http://rsg.uz/assets/components/cronmanager/cron.php'

Re: CRON: Permission denied

Posted: Tue Apr 10, 2018 4:08 pm
by TITAN-UZ
Из консоль все работает
1 и 2 вариант тоже не работает

Re: CRON: Permission denied

Posted: Sat Jun 07, 2025 6:02 pm
by admirko
TITAN-UZ wrote:
Tue Apr 10, 2018 4:08 pm
Из консоль все работает
1 и 2 вариант тоже не работает
Может работать "из консоли", потому что Вы запускаете скрипт от имени своего пользователя. У Вашего User'a могут быть права на используемые директории, при запуске cron'a - прав может не быть, если cron добавлен от имени другого пользователя.

Переменная $_SERVER['DOCUMENT_ROOT'] создаётся только при http запросе к web серверу. Посмотреть варианты решения можно, например, тут:
https://ru.stackoverflow.com/questions/ ... ument-root