小言_互联网的博客

Ubuntu 20.04 LTS 安装apache2&实现解析php | .htaccess文件学习

331人阅读  评论(0)

Ubuntu 20.04 LTS 安装apache2&实现解析php | .htaccess文件学习

今天做到了一道文件上传的题目,运用到了.htaccess文件。打算在本地安装apache2服务器,测试一下,遇到了很多问题,比如我才发现我还没有安装php233。修改配置使得.htaccess有效也看了很多教程,最终成功了,这里做记录后供大家参考。

安装apache2服务器

sudo apt update
sudo apt install apache2

安装好后在浏览器中进行访问,输入你的机器的ip就行。

安装php

sudo apt install libapache2-mod-php

这里我们不是直接安装sudo apt install php。主要的原因应该是libapache2-mod-php可以自动帮你进行apache与php之间的相关配置。安装libapache2-mod-php时已经自动安装了php。

安装了它,我们的apache服务器就能解析php文件了。

测试,我们写一个1.php来测试一下。

<?php phpinfo();?>

成功返回php信息。说明我们的apache服务器已经能顺利解析php了。

修改配置文件使得.htaccess有效

/etc/apache2/apache2.conf 174行左右之后加入以下内容。吐槽一下网上的很多教程,都已经过时了(

<Directory /var/www/html>
	Options Indexes FollowSymLinks
	AllowOverride All
	Require all granted
</Directory>

具体效果如下

然后我们重启apache服务器,我了解到的有两种方式

service apache2 restart
或者
systemctl restart apache2	

.htaccess实例 | 把jpg后缀变成php可执行文件

之后我们试着在/var/www/html下写一个.htaccess文件来把.jpg文件变成php可执行文件。

AddType application/x-httpd-php .jpg

此外我们还可以这样写。

<FilesMatch ".jpg">
  SetHandler application/x-httpd-php
</FilesMatch>

FileMatch 后面的字符串是根据正则匹配写的。所以我们这样写是不是有点问题呢?如果用户上传一个.jpg.txt也会被当作可执行文件。

所以真要执行严格的后缀名为jpg的话,我们应该这样写。

<FilesMatch ".jpg$">
  SetHandler application/x-httpd-php
</FilesMatch>

然后我们把刚才的1.php重命名为1.jpg。在正则表达式中$表示字符串的结尾,也就是我们限制了.jpg出现在字符串的结尾。

战术总结

至此,我们已经成功了联合了apache和php,修改使得.htaccess文件有效,并写了一个小case。从一开始的windows桌面端的wampserver。再到后来 docker的 ctftraining/base_image_nginx_mysql_php_73,我用php的方式慢慢演变,但是用的都算集成环境。今天成功自己配置了一个apache服务器和php。还了解了如何使.htaccess生效,说实话网上的教程都过时了,还一大堆复制粘贴怪,看的人怪闹心的,这次是完全我自己试出来的,对apache配置文件加深了了解。还了解了.htaccess的两种写法。今天可以说收获颇丰。

参考链接

ubuntu 配置Apache2 + PHP环境配置 - 简书 (jianshu.com)

.htaccess 文件上传 - 简书 (jianshu.com)

`


转载:https://blog.csdn.net/Cypher_X/article/details/117203012
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场