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

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)

`

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值