@savage_me

Почему файл создается в /home/admin/, а не в /home/admin/domains/mydomain.com/public_html/?

В DirectAdmin создаю CRON задание.
/usr/local/bin/php /home/admin/domains/mydomain.com/public_html/1.php >/dev/null 2>&1

Содержимое 1.php
<?php
file_put_contents( '1.txt', '1', false );
?>

Скрипт запускается, но файл создается не в /home/admin/domains/mydomain.com/public_html/, а в /home/admin/.
  • Вопрос задан
  • 454 просмотра
Решения вопроса 1
martin74ua
@martin74ua Куратор тега Системное администрирование
Linux administrator
потому что крон выполняется от какого то пользователя. в данном случае - от пользователя админ.
И по умолчанию текущим каталогом является его хоум.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Wexter
Потому что рабочая папка при таком запуске будет /home/admin, добавьте в скрипт
chdir(dirname(__FILE__));
в самом начале, тогда рабочей папкой будет та где лежит скрипт
Ответ написан
Все совершенно правильно
крон работает от root и соответственно у рута совершенно другая домашняя директория, переменные среды, версия php и тд и тп.
Решение
1. crontab -e -uИМЯ ЮЗЕРА - но тут есть еще и тонкоссти с пхп поскольку они не совсем те что прописаны в конфигах apache nginx посколкьу вы опять же не указали какой php.ini файл инициализировать и какую версию какое представление пхп.
2. но есть куда более простой способ
это кроном и тут уже без разницы под каким юзермо поскольку мы будем скачивать с сайта страничку, а это означает что переменные среды загрузятяс с сайта, все константы и пхп будет от сайта, движок сайта и тд и тп.
Короче вот
50 15 * * /usr/bin/wget -t 1 -O - 'http://site.ua/script.php?p1=a&p2=b'

или
50 15 * * /usr/bin/wget -O /dev/null -q http://test.ru/test/index.php

в общем вы уловили мысль
таки образом вы просто запустите на сайте php файл как обычный клиент.
Манов в интернете тьма
https://www.ukraine.com.ua/faq/kak-zapustit-cron-c...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы