• 技术文章 >php教程 >php手册

    Nginx+php fastcgi 发生 Access Denied

    2016-06-06 19:46:15原创637

    原因分析: php官方从5.3.9开始,加入了一个配置security.limit_extensions(/usr/local/php/etc/php-fpm.conf),默认状态下只允许执行扩展名为.php的文件,造成了其他类型的文件不支持的问题。 如果你请求的 地址是 css js png这种资源 会被 php 拒绝,如

    原因分析:

    php官方从5.3.9开始,加入了一个配置"security.limit_extensions"(/usr/local/php/etc/php-fpm.conf),默认状态下只允许执行扩展名为".php"的文件,造成了其他类型的文件不支持的问题。

    如果你请求的 地址是 css js png这种资源 会被 php 拒绝,如果你请求的是 http://localhost/user (暗含 http://localhost/user/index.php)也是不行的。


    解决方式

    1,有的人修改 php的配置文件 将 允许的扩展 都加上 比如security.limit_extensions=.php .html .js .css .jpg .jpeg .gif .png .htm#

    但是这样其实是不好的 因为静态资源本来就不应该让php fast-cgi处理

    2,(推荐)使用nginx的rewrite

    location ~ \.(js|css|gif|jpg|jpeg|png)$ {
    root D:/tmp;
    }
    location ~ \.php$ {
    root html;
    fastcgi_pass 127.0.0.1:3344;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME D:/tmp/$fastcgi_script_name;
    include fastcgi_params;
    }
    location / {
    root D:/tmp/film;
    fastcgi_pass 127.0.0.1:3344;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME D:/tmp/film/$fastcgi_script_name;
    include fastcgi_params;
    rewrite ^(.*)$ $1/index.php;
    }

    如此可以较好解决问题 第一个location过滤类型 可能不够,可以根据自己的需求添加

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:php学习笔记(四)之发送邮件02 详细操作 下一篇:PHP持续集成实践
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 大型网站架构演变和知识体系• php获取从百度搜索进入网站的关键词的代码• 学习PHP重定向的三种方法• 完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题• PHP更新购物车数量(表单部分/PHP处理部分)
    1/1

    PHP中文网