配置nginx,Apache支持pathinfo模式 及 php-fpm常用重启、启动、停止命令

一、配置nginx,Apache支持pathinfo模式

    phpinfo模式就是类似这样的路径:http://47.9.1.3/index.php/home/index/action/3408.html。从中可以看出其有以下几个特点。

1,URL中带有入口文件全名,即index.php,
2,在入口文件后面依然跟有路径比如上面的/home/index/action/3408.html
3,很多框架中后面分别是/模块/控制器/方法参数等,Thinkphp就是这样的。当然这个不一定非得是模块控制器方法的组成。

    按照常理来理解,index.php后面跟随着路径,那么index.php就相当于一个文件夹了。但实际上又不存在index.php这个文件夹,所以如果没有开启phpinfo模式,那么这个路径解析就会报找不到文件。

    而只有在开启phpinfo模式之后,服务器才会去执行index.php这个文件。从服务器上的配置方法也可以看出来。

    下面是nginx服务器开启phpinfo模式的方法:

location ~ [^/]\.php(/|$)
{
  # comment try_files $uri =404; to enable pathinfo
  #try_files $uri =404; #把这行代码注释,让服务器不尝试去加载路径文件
  fastcgi_pass unix:/tmp/php-cgi.sock;
  fastcgi_index index.php;
  include fastcgi.conf;
  include pathinfo.conf; #加载phpinfo.conf配置
}

    重启nginx服务器即可。对于Apache服务器,需要先加载rewrite模块,将http.conf中的配置AllowOverride None将None改为 All,在.htaccess文件中加入

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

重启Apache即可。publish:April 14, 2015 -Tuesday

二、php-fpm常用重启、启动、停止命令

    PHP-fpm的启动,直接执行php-fpm的绝对路径即可。建议打开php配置文件中的pid文件(以方便获取进程id值)。如果把php-fpm写入了服务,也可以使用service php-fpm start或/etc/init.d/php-fpm start来启动。另外php-fpm也可以使用信号控制:php-fpm的master主进程可以理解以下信号:

INT, TERM 立刻终止
QUIT     平滑终止
USR1     重新打开日志文件
USR2     平滑重载所有worker进程并重新载入配置和二进制模块

    测试如下:

[root@kermit ~]# service php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done
[root@kermit ~]# php -v
PHP 5.3.28 (cli) (built: Jul 21 2016 17:44:48) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies
    with Zend Guard Loader v3.3, Copyright (c) 1998-2010, by Zend Technologies
[root@kermit ~]# ps -ef |grep "php-fpm: master process" | grep -v 'grep'  
root     18541     1  0 09:35 ?        00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)                                                                    
[root@kermit ~]# kill -USR2 18541
[root@kermit ~]# ps -ef |grep "php-fpm: master process" | grep -v 'grep'  
root     18610     1  0 09:36 ?        00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)                                                                    
[root@kermit ~]# service php-fpm status
Usage: /etc/init.d/php-fpm {start|stop|force-quit|restart|reload}
[root@kermit ~]# 

     我的php版本是5.3.28。使用命令:kill -USR2 18541 平滑重启了php-fpm进程,并生成了新的进程ID。如果打开了pid文件,则可以直接使用cat获取pid文件中的进程ID值,如我下面的php-fpm配置:

[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice

    这样就可以直接使用以下命令来操作:

[root@kermit ~]# cat /usr/local/php/var/run/php-fpm.pid
18610
[root@kermit ~]# kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
[root@kermit ~]# ps -ef |grep "php-fpm: master process" | grep -v 'grep'
root     18801     1  0 09:47 ?        00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)                                                                    
[root@kermit ~]# 

    注:php5.3.3以后源码中已经内嵌了php-fpm,不用再打php-fpm补丁,只需要在configure的时候添加编译参数 –enable-fpm –with-fpm-user=www –with-fpm-group=www –with-libevent-dir=libevent位置。 

    但是,php5.3.3以后的php-fpm不再支持php-fpm以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林戈的IT生涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值