Рейтинг:-1

WP-CLI не запускается из cronjob

флаг cn

У меня есть сценарий bash, который извлекает информацию из моей базы данных, на основе полученной информации создает несколько папок, содержащих файлы WP, в каждой из них, а затем выполняет настройку. Сценарий отлично работает, когда я вызываю его вручную, однако WP CLI не работает, когда вызывается из моего Ubuntu Cronjob.

Вот bash-скрипт:

#!/бин/баш 

set -f # отключить подстановку
IFS=$'\n' # установить разделитель полей в NL (только)



arr=($(sudo mysql -u root -h localhost -e "ИСПОЛЬЗОВАТЬ мой сайт; ВЫБЕРИТЕ * ИЗ сайтов, ГДЕ статус = 'ожидание'" | awk 'NR>1'))



для i в "${arr[@]}"
делать
siteid=$(echo $i | awk '{print $1}')
instance=$(echo $i | awk '{print $2}')
владелец=$(эхо $i | awk '{print $3}')
status=$(echo $i | awk '{print $4}')
временный URL=$(эхо $i | awk '{print $5}')
url=$(echo $i | awk '{print $6}')
dbname=$(echo $i | awk '{print $7}')
dbuser=$(echo $i | awk '{print $8}')
dbpass=$(echo $i | awk '{print $9}')
dbprefix=$(echo $i | awk '{print $10}')
title=$(echo $i | awk '{print $11}')
admin_user=$(echo $i | awk '{print $12}')
admin_password=$(echo $i | awk '{print $13}')
admin_email=$(echo $i | awk '{print $14}')

sudo mysql -u root -h localhost -e "СОЗДАТЬ базу данных $url; ПРЕДОСТАВИТЬ все привилегии на $url.* для $dbuser@'localhost', идентифицированного '$dbpass'"

sudo cp -r /var/www/mysite.com/wordpressfiles /var/www/mysite.com/$url

sudo chown iosef: iosef -R /var/www/mysite.com/$url
sudo find /var/www/mysite.com/$url -type d -exec chmod 777 {} \;
sudo find /var/www/mysite.com/$url -type f -exec chmod 777 {} \;
sudo find /var/www/mysite.com/$url/wp-content/ -type d -exec chmod 777 {} \;
sudo find /var/www/mysite.com/$url/wp-content/ -type f -exec chmod 777 {} \;


cd /var/www/mysite.com/$url && /usr/local/bin/wp core config --dbname=$url --dbuser=$dbuser --dbpass=$dbpass --dbprefix=$dbprefix;

cd /var/www/mysite.com/$url && /usr/local/bin/wp core install --url=www.mysite.com/$url --title=$title --admin_user=$admin_user --admin_password =$admin_password --admin_email=$admin_email;


сделано

А вот и cronjob (запускается от имени root)

* * * * * /bin/bash /home/iosef/createinstanceinfolder.sh >/dev/null 2>&1

Есть идеи?

vautee avatar
флаг kr
Есть ли какие-либо ошибки при выполнении вашего задания cron в /var/log/syslog? Возможно, удалите часть >/dev/null 2>&1, чтобы увидеть все возникающие ошибки. Добавьте их к своему вопросу.
user9517 avatar
флаг cn
Дубликат почти наверняка поможет вам решить вашу проблему. Если нет, то он поможет вам собрать информацию, которая поможет людям помочь вам.
флаг cn
Теперь я получаю сообщение об ошибке, говорит следующее: Ошибка: YIKES! Похоже, вы запускаете это как root. Вы, вероятно, хотели запустить это как пользователь, под которым существует ваша установка WordPress. Если вы ДЕЙСТВИТЕЛЬНО хотите запустить это как root, мы не будем вас останавливать, но просто имейте в виду, что любой код на этом сайте будет иметь полный контроль над вашим сервером, что делает его довольно ОПАСНЫМ.
флаг cn
Если вы хотите продолжить как root, запустите это снова, добавив этот флаг: --allow-root Если вы хотите запустить его как пользователь, под которым находится этот сайт, вы можете запустить следующее, чтобы стать соответствующим пользователем: sudo -u ПОЛЬЗОВАТЕЛЬ -i -- wp
Рейтинг:0
флаг cn

user9517 предоставил ответ: отвечает ли это на ваш вопрос? Почему мой crontab не работает и как его устранить? ✓

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.