Я запускаю демонстрацию CMS на моем сервере. В этой демонстрации потенциальные клиенты могут опробовать серверную часть CMS. Вот почему я создал php-скрипт, который удаляет всю папку CMS и копирует в нее резервную копию. Таким образом, при каждом запуске скрипта демо-сайт восстанавливается.
Дело в том, что я выясняю, как это сделать с помощью cron.
Я использую следующую команду (я использую CentOS).
0 * * * * php /home/USER/public_html/replaceCMS.php
Это заменяет все файлы в папке, но также вызывает 500 внутренних ошибок сервера.
Когда я запускаю скрипт через браузер, проблема не появляется.
Я также попытался разархивировать .zip с перезаписью в демонстрационную папку. Делая это с файловым менеджером cPanel, все прошло хорошо. Выполнение этого с командой unzip -o вызывает ту же ошибку.
Кто-нибудь из вас знает, как это случилось?
Когда задание выполняется от имени пользователя root, файлы, вероятно, будут принадлежать пользователю root, который не является тем же пользователем, что и ваш веб-сервер. Таким образом, когда вы вызываете скрипт через браузер, он запускается с пользовательским контекстом веб-сервера, а не с правами root.
Вы можете проверить это, запустив ls -l
в командной строке и видеть, кто владелец, когда вы запускаете его с помощью cronjob, а не когда вы открываете страницу с помощью браузера.
Других решений пока нет …