Nginx php fpm正在解析.phps而不是显示代码(hilighted)
目前我们正在运行nginx+phpfpm,但在显示.phps文件时遇到了一个问题 如果我将.phps添加到位置规则,那么它将开始下载源代码 在apache中,您通常会这样做 AddType应用程序/x-httpd-php-source.phps 如何在php fpm中修复此问题 这是配置文件包含的内容:Nginx php fpm正在解析.phps而不是显示代码(hilighted),nginx,php,Nginx,Php,目前我们正在运行nginx+phpfpm,但在显示.phps文件时遇到了一个问题 如果我将.phps添加到位置规则,那么它将开始下载源代码 在apache中,您通常会这样做 AddType应用程序/x-httpd-php-source.phps 如何在php fpm中修复此问题 这是配置文件包含的内容: location ~ \.(txt|php|html)$ { include server_fpm; } 服务器fpm组件 include fastcgi_params; fastcg
location ~ \.(txt|php|html)$ {
include server_fpm;
}
服务器fpm组件
include fastcgi_params;
fastcgi_pass backend;
fastcgi_参数包含
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
#Custom parameters
#Legacy apache forward FCGI params
fastcgi_param HTTP_X_REAL_IP $remote_addr;
fastcgi_param HTTP_X_NGINX_VERSION $nginx_version;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_index index.php;
hightlight_source.php:
<?php highlight_file($_SERVER['DOCUMENT_ROOT'].$_SERVER['SCRIPT_NAME']); ?>
hightlight_source.php:
<?php highlight_file($_SERVER['DOCUMENT_ROOT'].$_SERVER['SCRIPT_NAME']); ?>
然后是phps.php(在目录o+x/mod 664中)
然后是phps.php(在目录o+x/mod 664中)
Hmm,一个肮脏的修正,但仍然有可能。所以php fpm不理解.phps文件返回hilighted代码?是的。但是里面的mod_php与highlight_file()函数的作用相同。很可能,php_fpm的作者只是不想添加这个奇怪的功能。它实际上被认为是一个功能,你不局限于一行高亮,你可以自己设计。嗯,一个肮脏的修复,但仍然是合理的。所以php fpm不理解.phps文件返回hilighted代码?是的。但是里面的mod_php与highlight_file()函数的作用相同。很可能,php_fpm的作者只是不想添加这种奇怪的功能。它实际上被认为是一种功能,你不局限于一行荧光灯,你可以自己设计。
location ~ \.phps$ {
try_files $uri =404;
fastcgi_pass backend;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SCRIPT_NAME $uri;
fastcgi_param SCRIPT_FILENAME /path/to/phps.php;
include fastcgi_params;
}
<?php
error_reporting(0);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><?php echo basename($_SERVER['DOCUMENT_ROOT'] . $_SERVER['SCRIPT_NAME']);?></title>
</head>
<body>
<?php highlight_file($_SERVER['DOCUMENT_ROOT'] . $_SERVER['SCRIPT_NAME']); ?>
</body>
</html>