我让这个应用程序在标准 LAMP 堆栈上运行,但是当我尝试在 docker nginx + 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;
}
这是标准输出错误:
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/