PHP 应用程序重定向周期

标签 php codeigniter nginx docker

我让这个应用程序在标准 LAMP 堆栈上运行,但是当我尝试在 docker nginx + php-fpm 中运行它时,我收到错误消息(使用 richarvey/nginx-php-fpm .docker 容器)。

编辑:这个容器在同一个容器中运行 nginx 和 php-fpm。

http://ip-vm/sistema/index.php/gui/gui/login

app error

server {
    listen   80; ## listen for ipv4; this line is default and implied
    listen   [::]:80 default ipv6only=on; ## listen for ipv6

    root /usr/share/nginx/html;
    index index.php index.html index.htm;

    # Make site accessible from http://localhost/
    #server_name localhost;

    # Disable sendfile as per https://docs.vagrantup.com/v2/synced-folders/virtualbox.html
    sendfile off;

    # Add stdout logging

    error_log /dev/stdout info;
    access_log /dev/stdout;

    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to index.html
            index index.php;
            try_files $uri $uri/ /sistemavtr/index.php/$args;
    }

    #error_page 404 /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
            root /usr/share/nginx/html;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
            fastcgi_split_path_info       ^(.+\.php)(.*)$;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO       $fastcgi_path_info;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_param SCRIPT_NAME $fastcgi_script_name;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_read_timeout 120;
    }

    location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
            expires           5d;
    }

    # deny access to . files, for security
    #
    location ~ /\. {
            log_not_found off;
            deny all;
    }

这是标准输出错误:

2016/04/13 23:23:13 [error] 20#0: *6 rewrite or internal redirection cycle while internally redirecting to "/sistema/index.php/", client: 192.168.139.1, server: , request: "GET /sistema/index.php/gui/gui/login HTTP/1.1", host: "192.168.139.132"

192.168.139.1 - - [13/Apr/2016:23:23:13 +0000] "GET /sistema/index.php/gui/gui/login HTTP/1.1" 500 594 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36"

所以,我不确定是 PHP Codeigniter App + ExtJS 出了问题,还是 URL 模式 (index.php/gui/gui/login) 不起作用。

最佳答案

你的nginx配置,fastcgi部分

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
        fastcgi_split_path_info       ^(.+\.php)(.*)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO       $fastcgi_path_info;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_read_timeout 120;
}

您的配置尝试将 php 代理到 unix 套接字,而不是 9000 端口。

应该是fastcgi_pass unix:/var/run/php5-fpm.sock;改为fastcgi_pass 127.0.0.1:9000

下一步。尝试查看 php-fpm 配置,在那里你应该找到监听端口。

最后 - 如果您使用的是 docker - 请确保所有 docker 主机都可以相互访问

UPD 1:似乎 .htaccess 也有问题 - 可以为特定主机保存 apache 规则,例如 - 重定向。 PHP-FPM 不会读取该文件并忽略它。

更新 2:.htaccess 可以在 PHP web 根文件夹(您的 index.php 所在的位置)中找到

关于PHP 应用程序重定向周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36617583/

相关文章:

php - Mysql varchar 唯一列 varchar(255) 与 varchar(50)

php - 如何用smarty生成json?

mysql - codeigniter 数据库在选择数据时出错

php - 停止网站目录列表

javascript - 从先前的模式启动新的模式

Nginx 全局服务器 block ?

php - 丢弃数组元素并对剩余元素求和

php - Nginx + PHP、Node.js 和 jQuery 设置

nginx - 使用 ngx_pagespeed 或 mod_pagespeed 而不是使用命令行工具缩小/优化 javascript 和 CSS

php - 插入批处理 codeigniter 中的非法字符串偏移