CodeIgniter 中的 Nginx 包含文件路径错误

CodeIgniter 中的 Nginx 包含文件路径错误

我正在 CI(CodeIgniter 3)中添加新页面,包括页脚、页眉和其他 .php 文件(由 CodeCharge Studio 制作),CI 页面(控制器)正在通过 /ci.php 文件运行,并且一切都在 Apache2 上运行良好。

由于我也在 NginX 上迁移,当我调用 /ci.php 时一切顺利,而当我从 /ci.php/pages/test_pages 调用相同的输出时,我得到了页面的正文部分,并且包含的​​文件出现错误:

[错误] 12165#0:*698 FastCGI 在 stderr 中发送:“无法打开主脚本:/Users/fedibelkacem/Documents/workspace/eMashq/ci.php/pages/ClientI18N.php(没有此文件或目录)”从上游读取响应标头时,客户端:127.0.0.1,服务器:emashq.fbe,请求:“GET /ci.php/pages/ClientI18N.php?file=Functions.js&locale=en HTTP/1.1”,上游:“fastcgi://127.0.0.1:9000”,主机:“emashq.fbe:81”,引荐来源:“http://emashq.fbe:81/ci.php/pages/test_pages

NginX 在错误的位置查找 Clientl18N.php。它位于根目录中,正如我所说,它在 Apache 上运行良好。

这是我的 NginX VHost 配置文件:

server {
    listen 81;
    server_name emashq.fbe;

    root /Users/fedibelkacem/Documents/workspace/eMashq;

    index index.php index.html;

    location / {
            # if I put /index.php, it forces /ci.php/pages/test_pages to call 
            # /ci.php/pages/index.php and I get an other but the same type error 
            # with No input file specified on the screen!
            try_files $uri $uri/ /ci.php;
    }

    location ~* \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            include fastcgi_params;
    }
}
# $config['index_page'] = 'ci.php'; // or = ‘’ in CI\applications\config.php 
# doesn’t make difference!

请帮我找到正确的 NginX 配置来运行我的 /ci.php/controller/etc。

答案1

这个文件提出一些建议来解决这个问题将不受控制的请求传递给 PHP问题。

必须单独处理并传输到脚本的uri包含内容。常见的解决方案是将位置定义更改为以下内容:pathinfoci.php

location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    ...
}

也可以看看这个文件并非所有实现都具有文件中列出的相同指令fastcgi_params。您需要确保将必要的信息传递给控制器​​。

相关内容