PHP应用程序redirect周期

我有这个应用程序工作在一个标准的LAMP堆栈,但是当我尝试运行它在dockernginx + php-fpm我得到一个错误(使用richarvey / nginx-php-fpm 。docker集装箱)。

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

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

应用错误

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; } 

这是stdout错误:

2016/04/13 23:23:13 [错误] 20#0:* 6重写或内部redirect周期内部redirect到“/sistema/index.php/”,客户端:192.168.139.1,服务器:,请求:“ GET /sistema/index.php/gui/gui/login HTTP / 1.1“,主机:”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,像Gecko)Chrome / 49.0.2623.112 Safari / 537.36“

所以,即时通讯不知道是否是PHP的Codeigniter应用程序+ 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配置,在那里你应该找到监听端口。

最后 – 如果您使用的是码头工具,请确保所有的码头工具都可以互相访问

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

UPD 2.htaccess可以在PHP web根文件夹(你的index.php所在的位置)找到。

所以,最后问题是default.conf。

使用这个问题作为指导来配置它我终于做到了: Nginx不服务子文件夹api应用程序(php-fpm)

所以我的/etc/nginx/sites-enabled/default.conf就这样结束了:

 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/ /index.php?$query_string; } location /sistema/ { index /server/index.php; try_files $uri /server/index.php/$uri; } #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_pass unix:/var/run/php5-fpm.sock; include fastcgi_params; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 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; } 

我不是很确定这是如何工作的,所以,我如何使它工作,但如果任何人都可以向我解释这一点,我将非常感激。