- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
ОС Debian 7.7
php.ini прописал
safe_mode_exec_dir = /var/www/1
safe_mode = On
2.sh
sudo /etc/init.d/mysql restart
пробовал по разному
так
<?php
var_dump(shell_exec('sudo /etc/init.d/mysql restart'));
?>
и так
<?php
$run = "ts /var/www/1/2.sh {$_SERVER['REMOTE_ADDR']}";
exec($run);
?>
с shell_exec без ts с sudo и без еще кучу в инете находил, толку ноль.
права кругом 777
где то мельком видел что в последних версиях пшп отказались от shell_exec и exec, может не так понял. Короч подскажите кто в курсе.
Пользователь www-data не добавлен в sudoers. Пропишите в /etc/sudoers что ему можно выполнять эту команду. И надеюсь что пакет sudo установлен?
записал в /etc/sudoers
www-data ALL=(root) NOPASSWD: ALL
su www-data
работает
$result = shell_exec ('sh /var/www/1/2.sh');
echo $result;
if ($result)
{
echo "Все хорошо.";
}
if (!$result)
{
echo "Ошибка.";
}
?>
Пишет
Stopping MySQL database server: mysqld failed! /etc/init.d/mysql: ERROR: The partition with /var/lib/mysql is too full! ... failed! Все хорошо.
$result = shell_exec ('sudo sh /var/www/1/2.sh'); и $result = shell_exec ('/var/www/1/2.sh');
не работают
если в 2.sh прописать
echo "TEST" >> out.txt
создается файл в корне сайта.
Что не так?
---------- Добавлено 09.12.2014 в 03:07 ----------
надо выполнить sudo /etc/init.d/mysql restart в 2.sh
The partition with /var/lib/mysql is too full! ... failed
А вручную запускается, может быть действительно нет свободного места?
www-data ALL=(root) NOPASSWD: ALL
NOPASSWD: ALL как-то слишком круто. Достаточно было ограничиться одной конкретной командой.
используйте банальный exec и sudo
где USERNAME - имя пользователя, от которого идет запуск
SCRIPT - команда со всеми параметрами
т.е. попробуйте
еще можно дать привелегию для service, и сделать что-то вроде:
/etc/sudoers
www-data - юзер от которого запускается скрипт
HOSTNAME надо заменить на хостнейм машины
/usr/sbin/service - полный путь до бинарника
shell.php
либо то, что находится после -S заменить на путь до скрипта sh, в котором просто прописать service mysql restart
но короткий вариант по идее должен работать (не проверял, но через sh 100% будет работать + в sh ненадо прописывать sudo).
p.s. права 777 незачем ставить
p.s.s. отключите лучше safe mode
Ничего не получилось, решил вопрос запуском пшп из папки под рутом в кроне
пшп скрипт, чекает сайт на доступность, отправляя на мыло, записывая в лог и перезагружая службы (достали уже парсеры, досеры, чекеры, брут вп, и т.д., ложат впс пока проснусь пол дня лежит)
может кому пригодится
{
$user_agent = 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$page = curl_exec($ch);
$err = curl_error($ch);
if (!empty($err))
return $err;
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $httpcode;
}
$url2 = array("/", "http://site2.ru");
foreach ($url2 as $url) {
$answer = check_http_status($url);
$date = date('H:i - d.m.Y');
$file = 'log.txt';
$content = "$url - $answer - $date\n";
if ($answer ==200) {
echo ""; }
else {
exec ('sh /var/www/script.sh');
mail("mulo@mail.ru", "$answer - $url - $date", "$url - $answer - $date");
file_put_contents($file, $content, FILE_APPEND | LOCK_EX);
}
}
?>
Маленький вопрос, как в баш запустить команды по очереди а то работает только последняя
/etc/init.d/mysql restart
/etc/init.d/apache2 restart
/etc/init.d/nginx restart
Поздравляю с изобретением monit!
Поздравляю с изобретением monit!
Так это нада разбиратся с этим монитом он еще ресурсы наверно жрет какие то, а тут скриптик 1кб и усе. Ну а вообще да если раньше кто то подсказал, мб было б и проще.
Спасибо за скриптик, пригодится.
Маленький вопрос, как в баш запустить команды по очереди а то работает только последняя
А так если :
service mysqld restart ; service httpd restart ; service nginx restart
У мнея сработало, CentOS.
[dsds@]# sh ./monit.sh
Shutting down MySQL.... SUCCESS!
Starting MySQL.. SUCCESS!
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
Stopping nginx: [ OK ]
Starting nginx: [ OK ]
Если последовательно, после отработки предыдущей, то через двойной амперсанд. Надо, чтобы каждая возвращала TRUE.
Ну конечно, собирать свой велосипед проще, чем взять готовый и поехать на нем