作为程序员一定要保持良好的睡眠,才能好编程

yaf路由中一个问题 Error Msg:Failed opening controller script /usr/local/nginx/html/test

发布时间:2018-12-28

我们在使用yaf的时候,做的是接口,


http://172.28.66.194:8029/Index/index


我们的接口地址是这样的,访问 home模块下 Index 控制器  index 方法


有一日,我们把接口写成了 http://172.28.66.194:8029/index.php/Index/index

服务器就报错了

Error Msg:Failed opening controller script /usr/local/nginx/html/testyaf/application/controllers/Ndex.php: No such file or directory


怎么会去找 Ndex.php 这个文件呢?


难道是我服务器nginx 隐藏了 index.php 这个文件?


把服务器nginx配置提供一下,代码如下:

server {
        listen       8029;
        client_max_body_size 100m;
        server_name localhost;
        index index.php index.html;
        root  /usr/local/nginx/html/testyaf;
        #error_page 404 = /404/index.html;
        location / { 
            root   /usr/local/nginx/html/testyaf;
            index  index.php;
        }   
        if (!-e $request_filename) {
    
    #rewrite "/category/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)" /category.php?categories_name=$1&categories_code=$2 last;
    rewrite ^/(.*)  /index.php/$1 last;
        }   

        location ~ \.php(/|$) {
                fastcgi_pass   127.0.0.1:9007;
                fastcgi_index  index.php;
                fastcgi_split_path_info ^(.+\.php)(.*)$;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
        }   
}




实验:


我把  

 rewrite ^/(.*)  /index.php/$1 last;

这行代码注释,可以访问吗?




注释掉 发现可以了。


nginx.png


难道和这个有关系?


那如果采用这种方式访问,还能处理吗?

http://172.28.66.194:8029/Index/index

nginx3.png


发现隐藏index.php 后,文件找不到了。



难道index.php  yaf没有做兼容处理?


隐藏index.php 后,就不能写index.php/index/index 这样的路径了?


先把现象写在这里吧,我没有做深入的研究。后续知道再补充...