2015-09-13 2 views
0

Мне нужно перезагрузить SPHINX ПОИСК через PHP. В терминале я делаю это:Перезагрузка службы ROOT с PHP (f.e. SPHINX Search)

sudo indexer --all --rotate 

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

f.e. shell_exec('sudo indexer --all --rotate');

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

Sphinx 2.2.9-id64-релиз (rel22-r5006) Copyright (с) 2001-2015, Эндрю Aksyonoff Copyright (с) 2008- 2015, Sphinx Technologies Inc (http://sphinxsearch.com)

используя конфигурационный файл '/etc/sphinxsearch/sphinx.conf' ... пропуск 'RT' без Plain индекс ... индексирование индекс 'test1' ... ВНИМАНИЕ! : атрибут 'id' не найден - IGNORING собрано 49433 документов, 45.1 MB отсортировано 4.8 Mhits, 100.0% сделано всего 49433 документов, 45067658 байт всего 5.540 сек, 8133618 байт/сек, 8921.45 документов/се c всего 49607 прочтений, 0,042 сек, 1,9 kb/call avg, 0,0 мс/вызов avg всего 424 записи, 0,106 сек, 373,8 kb/call avg, 0,2 мс/вызов avg ВНИМАНИЕ: доступ запрещен к PID 16315. ВНИМАНИЕ: индексы НЕ повернуты.

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

Если я пытаюсь остановить и запустить СФИНКС с WWW-данными я получаю:

старта: Отклонено отправить сообщение, 1 совпадающих правила; type = "method_call", sender = ": 1.4502" (uid = 33 pid = 16887 comm = "start sphinxsearch") interface = "com.ubuntu.Upstart0_6.Job" member = "Start" error name = "(отключенное) "requested_reply = "0" назначения = "com.ubuntu.Upstart" (UID = 0 PID = 1 Comm ="/SBIN/INIT «)

Я играю с ш сценария shmod и Чаун и я ничего не получаю.

ответ

0

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

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

#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-данные) может просто вызвать индексатор по мере необходимости.

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