问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

linux apache不能解析php文件,访问后出现的是源代码,什么原因啊?

发布网友 发布时间:2022-04-06 02:55

我来回答

4个回答

懂视网 时间:2022-04-06 07:16

Apache下禁止php文件被直接访问的解决办法:在php文件中去判断【REDIRECT_URL】,代码为【$_SERVER['REDIRECT_URL']ordie('Forbidden')】。

【相关学习推荐:php编程(视频)】

Apache下禁止php文件被直接访问的解决办法:

 一开始,我想在重写规则里直接禁止php后缀的URL被访问。但后来发现重写规则是递归调用的,如果在重写规则里直接禁止php,那么重写到php文件的规则也会失效。RewriteEngineOn

  RewriteRule^test$/test.php[L]
  RewriteRule^test.php$$0[F,L]

4a29ba6e65f19baae3256b82e11ba32.png

  递归调用这真可怕,一开始访问/test的时候URL重写检查一次,然后匹配到^test$就内部重定向到/test.php,然而内部重定向也会触发URL重写,因此再次检查,匹配到^test.php$,被强制直接[F](Forbidden)操作,所以就变成了403错误。既然这样,就必须判是否已经经过服务器重定向。这时候服务器变量里有个REDIRECT_URL可以使用,因此我试着用这个做判断。

  RewriteEngineOn
  RewriteRule^test$/test.php[L]
  RewriteCond%{REDIRECT_URL}^$

  RewriteRule.*$0[F,L]这样写访问/test依旧被403,稍微检查下,发现RewriteCond中%{REDIRECT_URL}永远为空,这样的话在重写规则中没办法直接禁止php了。

但是可以用不怎么华丽的方法实现。就是在php文件中去判断REDIRECT_URL,虽然这个方法可以实现,但是感觉很逊,只是目前为止也没找到什么更好的办法了。

  $_SERVER['REDIRECT_URL']ordie('Forbidden');
  //这里只是显示文字而已,实际使用的时候还需输出的HTTP错误代码。
  echo$_SERVER['REDIRECT_URL'];//成功访问显示信息
  ?>

  把这段PHP代码修改下丢进全局引用里就基本上没啥问题了,虽然不是完美解决,但是至少还是解决了,以后也许会发现更好的方法。

393c9e6e32ea2fb46db0c0b31c1dea8.png

想了解更多编程学习,敬请关注php培训栏目!

热心网友 时间:2022-04-06 04:24

没有加载PHP模块或者是MIME类型没填对,PHP文件被当成了纯文本文件提供下载而不执行里面的代码。Apache本身是不具备执行PHP代码的能力的,需要把PHP当成Apache的一个模块来加载来解析PHP文件。你看看apache的配置文件httpd.conf是否有类似的内容,C:/php-5.3.5 是我电脑上的PHP安装目录,你要改成自己电脑的路径

#添加PHP模块
LoadMole php5_mole C:/php-5.3.5/php5apache2_2.dll

#指定PHP程序的根目录
PHPIniDir "C:/php-5.3.5"

#添加MIME映射,让apache把PHP文件当成代码文件来执行
AddType application/x-httpd-php .php .phtml

感觉LZ是初学者,不会配置PHP运行环境的话,建议你搜一下XAMPP,这个是Linux下的PHP傻瓜包,直接把Apache, PHP,MYSQL 等全部自动部署好了。追问你好,我用的是linux,向你说的那样,我都试过了,linux系统下用的是 .so,不知道什么原因我重新编译了apache后,所有php的配置都还原了,我只更改了httpd.conf,php.ini没改太仔细,可是我对比了以前的php.ini和httpd.conf文件,两个也没有区别,后来我们组长给改好了,谢谢你的回答,我没分了,要不然给你加十分

热心网友 时间:2022-04-06 05:42

apache和php是两码事。
php的网页必须装php5软件来解析。
常用是的LAMP一整套东西,
后两个字母就是MySQL和php,你只搞了前两个,当然不够了,
后面两个也要装的。
你去搜一下LAMP,看看就知道了。

热心网友 时间:2022-04-06 07:17

同楼主一个问题啊,昨天装了一个晚上没搞好,妹的!追问什么问题??

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
招投标技术负责人是什么证 欧美的经典的线稿漫画 推荐几款欧美漫画,跪求!!! 十大DC漫画推荐 DC漫画必看经典盘点 dc好看的漫画有哪些 十大欧美漫画推荐 欧洲经典漫画盘点 欧洲好看的漫画有哪些 欧美有哪些经典的漫画作品? 十大美国漫画推荐 美国漫画经典作品 美国著名的漫画有哪些 音悦台mini客户端为什么不能记住账号自动登录呢,,,每次都要重新输~郁... 请问 音悦台 和 百度 怎样解绑手机? 如何注册音悦台账号 apache访问php网页出现以下情况 如何解决??? mac下终端输入php artisan list报错 PHP导入项目启动失败,找不到接口,求解,是从阿里云下载下来的项目 0x0000007A xp蓝屏0x00000050(0xFF80EE20,0x00000008,0xFF80EE20,0x00000000)怎么解决? 电脑蓝屏:STOP:0X000008E(0XC0000005,0XBF802514,0XB592EC08,0X00000000) 电脑开机后没有进入系统就蓝屏,求助 电脑蓝屏出现0×0000008E请问是什么原因 iphone4 连接电脑发生未知错误0xE8000001,怎么办? 我的ipad同步iTunes下载软件,显示未知错误 0xE8000005 什么原因 ipod touch 1代,连接iTunes一直显示无法连接,出现错误0XE800000A iPhone遇到未知错误0xE怎么办 itunes发生错误代码0XE800000A 应用程序发生异常 未知的软件异常(0xe06d7363),位置0x7c812aeb 打开cad出现:“未处理的异常 E06D7363 (e06d7363h),地址: 7C812FD3h”,怎样解决? 应用程序发生异常 未知的软件异常 (0xe06d7363),位置为0x03ba2fd3 是怎么回事,怎么解决?向大神求教。 h1_sp64_ship应用程序错误.应用程序无法正常启动0xe06d7363.请单击确定关闭应用程序.求大神解决 未知的软件异常(0xe06d7363)是怎么回事 地下城与勇士应用程序发生异常未知的软件异常(0xe06d7363),位置为0x74C824C2 安装Windows11出现错误代码0xe06d7363怎么处理 整合apache和php后访问.php文件提示File not found,求大神拯救 php与apache配置出问题了,无法访问。 是不是Apache禁止的直接下载.php文件 apache访问php文件时只要里面含有index文件就只执行index文件,怎么解决 PHP 访问MYSQL 特殊字符怎么处理 如何自动转义字符串在PHP SQL查询 php插入MYSQL数据库的时候,不能有那些特殊字符,就是我要对这些数据要进行提前处理的 php操作MySQL中单引号与怎么处理? php mysql_real_escape_string函数用法与实例教程 MySQL如何写入特殊符号 php 如何存储和输出转义字符 mysql插入数据的问题 特殊字符 PHP 写入Mysql数据库,标记语言出现特殊符号! mysql模糊查询like中包含特殊字符在php中要如何处理 php向MYSQL数据库插入。 PHP页面编码GB2312 数据编码UTF-8 插入特殊符号是?号如何解决 php 如何将html转换成图片 php 如何实现html生成图片 php将html转换成图片问题 急!html提交数据给php,用php生成图片,如何在html中显示? PHP默认输出的是HTML代码,如何转换成效果输出?