记一次nginx服务器php文件解析问题

发布于 2024-05-27  261 次阅读


在刷题过程中,我准备用自己搭的服务器写一个php文件来反弹shell,但是我的nginx服务竟然不能解析php文件了,访问文件,只是把文件下载下来,真是让人头大。在网上找了好多方法都没能解决问题,最后还是自己摸索出来了。

首先,要解析php文件,就需要在nginx的配置文件中开启(注意:有的直接就在nginx.conf中,有的在sites-enabled/default中),就是去掉这段代码注释:

#location ~ \.php$ {
	#	include snippets/fastcgi-php.conf;
	#
	#	# With php-fpm (or other unix sockets):
	#	fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
	#	# With php-cgi (or other tcp sockets):
	#	fastcgi_pass 127.0.0.1:9000;
	#}

然后第一个坑就来了,在你的/etc/php/版本号/fpm/pool.d文件夹下,配置文件www.conf中,应该特别关注listen这一行:

如果是这种情况,那么fastcgi_pass unix:/run/php/php7.4-fpm.sock;,如果是listen=127.0.0.1:9000那么fastcgi_pass 127.0.0.1:9000;

我以为这里就行了,但是又给我报了不允许访问的错!!!!

这里就是由于用户不匹配导致的,我们看到在www.conf中用户为www-data,所以我们必须确保nginx的用户也要为www-data:

以上问题解决后,没有给我再报error了,但是!但是!!!!现在访问文件直接就报file not found了,真是逆天!!!!这里主要是fastcgi_param参数的问题,我们要做的是将:fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;改为fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;,让当前请求在root指令中指定值。这里也要注意,有的是在niginx.conf文件中,但是有的是在fastcgi.conf文件中。终于完结撒花!!!!这个问题也是搞了一整天,搞得人心烦意乱的,解决问题还是得沉下心来吧。


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。