Apache2在默认情况下没有开启PathInfo模式,如果使用apache提供的httpd服务,网站文件上传后可以进入首页,如http://114.53.245.102,采用这种方式访问时可以看到首页页面,但在域名后增加url字段时便出现404错误,或者access denied,如地址栏为http://114.53.254.102/a/b/c这种方式时便无法访问。这在许多框架应用时都会出现,因此需要手动开启pathinfo服务。
(1)如果框架为php类框架时,可以在网站根目录下编辑phpinfo.php文件,并在里面输入:
<?php
echo phpinfo();
?>
然后在浏览器地址栏输入:http://域名/phpinfo.php,
查看如图中红圈所示位置,如果local value和master value均为0,就表明没有开启,而默认情况下这个值都是0。因此需要修改为1。
(2)开始修改。在linux服务器中找到php.ini文件,在当前用户目录下使用 find / -name php.ini,会得到对应的路径,
如果不清楚当前php版本,可以使用php -v获取当前版本信息,由此去定位具体的php.ini文件。例如当前php版本为5.6,则使用vi /user/local/php56/etc/php.ini 开展编辑,使用vi搜索命令 /cgi.fix_pathinfo,快速定位在文件中的位置,然后将其值修改为1。然后保存退出。
即cgi.fix_pathinfo=1
(3)重启php-fpm。
使用/etc/init.d/php-fpm restart重启,然后重新在浏览器地址栏输入http://域名//a/b,可以发现已经开启了pathinfo模式。
也可以再重新打开phpinfo.php文档,查看cgi.fix_pathinfo的值是否已经发生了改变。
如上步骤本人已经亲测成功,供大家参考。之前在网上看到的修改httpd.conf配置文件的方式完全行不通,所以在此记录一下以便后续查询,也便遇到同样问题的朋友参考。