Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP重新加载根服务(f.e.SPHINX搜索)_Php_Root_Sphinx_Reload_Sudo - Fatal编程技术网

使用PHP重新加载根服务(f.e.SPHINX搜索)

使用PHP重新加载根服务(f.e.SPHINX搜索),php,root,sphinx,reload,sudo,Php,Root,Sphinx,Reload,Sudo,我需要通过PHP重新加载SPHINX搜索。在终端中,我执行以下操作: sudo indexer --all --rotate 它工作得很好,但现在我需要通过php来实现这一点 f、 e.shell_exec('sudo indexer--all--rotate') 但它不起作用。如果我尝试使用www数据用户执行此操作,我会得到: Sphinx 2.2.9-id64-rel22-r5006版权所有(c)2001-2015, Andrew Aksyonoff版权所有(c)2008-2015,斯芬克

我需要通过PHP重新加载SPHINX搜索。在终端中,我执行以下操作:

sudo indexer --all --rotate
它工作得很好,但现在我需要通过php来实现这一点

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

但它不起作用。如果我尝试使用www数据用户执行此操作,我会得到:

Sphinx 2.2.9-id64-rel22-r5006版权所有(c)2001-2015, Andrew Aksyonoff版权所有(c)2008-2015,斯芬克斯科技公司 ()

使用配置文件“/etc/sphinxsearch/sphinx.conf”。。。跳过 非普通索引“rt”。。。索引索引“test1”。。。警告:属性 找不到“id”-忽略收集的49433份文档,45.1 MB已排序4.8 Mhits,100.0%完成总计49433个文档,45067658字节总计5.540秒, 8133618字节/秒,8921.45文档/秒总计49607次读取,0.042秒,1.9秒 kb/呼叫平均值,0.0毫秒/呼叫平均值总计424次写入,0.106秒,373.8 kb/平均呼叫,0.2毫秒/平均呼叫警告:拒绝访问PID 16315。 警告:索引未旋转

警告:访问PID 16315被拒绝

如果我尝试使用www数据停止和启动SPHINX,我会得到:

开始:拒绝发送消息,1条匹配规则;type=“方法调用”, sender=“:1.4502”(uid=33 pid=16887 comm=“start sphinxsearch”) interface=“com.ubuntu.Upstart0\u 6.Job”member=“Start”错误 name=“(unset)”请求的\u reply=“0”destination=“com.ubuntu.Upstart” (uid=0 pid=1 comm=“/sbin/init”)


我正在玩sh脚本shmod和chown,我什么也没有得到。

你也应该开始在www数据用户下搜索。避免使用sudo。(尽管可能允许sudo via、visudo)

所以停止搜索。将所有索引等、日志和PID更改为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
然后apache中的php(作为www数据运行)可以根据需要调用indexer

如果您想使用upstart etc,则需要修改其配置文件以作为特定用户运行searchd(不能仅通过作为特定用户运行它来调用服务启动/停止)