Cron функция не отрабатывает php скрипт
Есть функция php которая лежит по адресу от корневого файла cron\update.php в ней находиться просто тестовый код, который генерирует txt страницы.
<?php file_put_contents($_SERVER["DOCUMENT_ROOT"].'/cron/'.date('H-i-s_d-m-Y').'.txt', "123");
Функция проверена и она отрабатывает. При создании cron запроса который по идеи должен выполняться каждую минуту OpenServer
%progdir%\modules\php\%phpdriver%\php-win.exe -c %progdir%\modules\php\%phpdriver%\php.ini -q -f %sitedir%\btsports.loc\cron\update.php

Эта функция не срабатывает. Можете подсказать в чём может быть проблема?
*В логах запросы вижу, но результата выполнения - нет.

Ответы (3 шт):
Cron - не браузер. При запросе HTTP-сервер (Apache, Nginc, etc.) добавляют свои стандартные и общепринятые поля.
Cron - это консольный запуск.
Чтоб дебажить такие приложения, добавьте в PATH папку интерпретатора PHP. Далее запускайте файл из консоли и смотрите результат выполнения.
Только учтите что переменные %phpdriver% и %progdir% - переменные чисто OpenServer'а, и их лучше прописать явно.
К решению вашей проблеммы. Во первых, как уже сказали, в консоли нету $_SERVER["DOCUMENT_ROOT"]. Поэтому лучше отталкиватся от директории, в которой лежит скрипт.
Так же, в коде, что вы указали в комментариях, вы пытаетесь создать файл в папке, которая не существует. В таком случае папка сама не создадится.
Поэтому нужно её создать. Вот такое решение получилось у меня:
<?php
$logDirectory = dirname(__FILE__) . "/cron";
$logFilename = $logDirectory . "/" . date("H-i-s_d-m-Y") . ".txt";
if(!is_dir($logDirectory)){
mkdir($logDirectory);
}
file_put_contents($logFilename, "123");
Совет который меня не просили:
Лучшая практика формата временной метки для имен файлов - "Y-m-d_H-i-s". В таком случае, при сортировке файлов по имени они будут идти в хронологическом порядке.
У вас же (например), вы сначала увидите в папке все файлы за месяц, что были сделаны в 1 час, потом в 2 часа, пото в 3 часа.
Попробуйте вот так
<?php file_put_contents(__DIR__ . date('H-i-s_d-m-Y') . '.txt', "123");
Вот так выглядел путь, если крон файл из другой дериктории запускаеться:
<?php file_put_contents('E:\\OSPanel\\domains\\test.loc\\cron\\' . date('H-i-s_d-m-Y') . '.txt', "123");
или короткая запись
<?php file_put_contents(__DIR__. '\\' . date('Y-m-d_H-i-s') . '.txt', '123');