Перезагрузите сервис ROOT с помощью PHP (например, SPHINX Search)

Мне нужно перезагрузить SPHINX SEARCH через PHP. В терминале я делаю это:

sudo indexer --all --rotate

И это работает нормально, но теперь мне нужно сделать это через php.

F.E. shell_exec('sudo indexer --all --rotate');

И это не работает. Если я пытаюсь сделать это с пользователем www-data, я получаю:

Sphinx 2.2.9-id64-release (rel22-r5006) Copyright (c) 2001-2015,
Эндрю Аксёнов Copyright (c) 2008-2015, Sphinx Technologies Inc
(http://sphinxsearch.com)

используя файл конфигурации ‘/etc/sphinxsearch/sphinx.conf’ … пропуск
непрозрачный индекс ‘rt’ … индексирование индекса ‘test1’ … ПРЕДУПРЕЖДЕНИЕ: атрибут
‘id’ не найден — IGNORING собрал 49433 документа, 45.1 MB отсортировано 4.8
Mhits, 100,0% выполнено всего 49433 документа, 45067658 байт всего 5,540 с,
8133618 байт / с, 8921,45 документов / с, всего 49607 операций чтения, 0,042 с, 1,9.
КБ / ср. вызовов, 0,0 мсек / всего вызовов, 424 записи, 0,106 с, 373,8
КБ / ср. вызовов, 0,2 мсек / ср. вызовов ПРЕДУПРЕЖДЕНИЕ: доступ к PID 16315 запрещен.
ВНИМАНИЕ: индексы НЕ вращаются.

ВНИМАНИЕ: доступ к PID 16315 запрещен. !!!

Если я попытаюсь остановиться и запустить SPHINX с www-данными, я получу:

начало: Отклонено отправленное сообщение, 1 соответствует правилам; TYPE = «method_call»,
sender = «: 1.4502» (uid = 33 pid = 16887 comm = «start sphinxsearch»)
interface = «com.ubuntu.Upstart0_6.Job» member = Ошибка «Start»
name = «(unset)» required_reply = «0» destination = «com.ubuntu.Upstart» (uid = 0 pid = 1 comm = «/ sbin / init»)

Я играю с sh скрипт shmod и chown и ничего не получаю.

0

Решение

Вы должны просто запустить searchd под пользователем www-data. Избегает необходимости использовать sudo. (хотя МОЖЕТ позволить sudo via, visudo)

Так что хватит искать. Измените все индексы и т. Д., Журналы и pids, которые будут принадлежать www-data, а затем

#stop current instance
searchd --stop

#change the owner of indexes and logs
chown www-data:www-data /path/to/index/folder/ -r
chown www-data:www-data /var/log/query.log
chown www-data:www-data /var/log/search.log

#start searchd up again
sudo -u www-data searchd

Тогда php в apache (работающем как www-data) может просто вызывать indexer по мере необходимости.

Если вы хотите использовать upstart и т. Д., Вам нужно будет затем изменить его конфигурационный файл для запуска searchd от имени конкретного пользователя (нельзя просто вызвать запуск / остановку службы, запустив ее от имени определенного пользователя.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]