Apache 和 PHP 结合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache 和 PHP 结合相关的知识,希望对你有一定的参考价值。
先输入命令 vim /usr/local/apache2.4/conf/httpd.conf,回车查看,见下图,
e2.4/conf/httpd.conf /usr/local/apache2.4/conf/httpd.conf /usr/loc
解析php,这边需要修改以下4个地方:
1、ServerName
2、Require all denied
3、AddType application/x-httpd-php .php
4、DirectoryIndex index.html index.php
1、ServerName
比如之前命令 /usr/local/apache2.4/bin/apachectl restart,回车,见下图,
这段提示看似报错,其实是正常的提示。如果我们不想看到这段话,就可以在文件 /usr/local/apache2.4/conf/httpd.conf 里面更改。重新使用 vim 进入文件,搜索 /ServerName,具体更改见下图,
将上图红色框框内的#去掉,保存并退出。重新输入刚才的命令,见下图,
这边出现错误提示,显示79行有问题,使用 vim 命令再次进入查看,见下图,
找到79行,在行首用#注释掉内容,保存并退出,接着restart,见下图,
错误还是存在,停掉后重新打开还是这样。这时候就该想到应该是打开了两个php的结果。使用 !vim 命令,进入,把79行的#去掉,恢复原来的状态,将php7用#注释掉,见下图,
保存并退出,再尝试重启,见下图,
这时候就没有提示了。很明显,php5和php7是有冲突的。接着看一下进程,输入命令 ps aux |grep httpd,回车,见下图,
2、Require all denied
这边需要增加一行配置,现在先查看一下 IP,输入命令 ifconfig,回车,见下图,
IP 就是上图红色框框显示的 192.168.218.128 。然后在浏览器上的地址栏里面输入 IP 地址,回车,见下图,
一会之后,可以看到 IP 是无法访问的,蓝色的字体提示“检查代理服务器和防火墙”。那么,遇到这种问题,要怎么排查呢?先在Windows上 cmd 里面 ping 一下 IP,见下图,
可以看到 IP 是可以通的,接着再判断它的 80 端口。上图显示没有 telnet 这个命令,是因为我们没有打开 telnet 客户端,现在将这个客户端的程序打开,具体操作见下图,
先打开“控制面板”,点击“程序”,进入下图,
点击“启用或关闭Windows功能”,进入下图,
选中“Telnet客户端”,再点击“确定”,一会之后,就显示下图,
点击关闭即可,返回Windows的cmd,重新输入命令 telnet 192.168.128.218 80,回车,见下图,
显示 80 端口连接失败。因为 Linux 虚拟机上并没有打开 80 端口,可以在 putty 上使用命令 iptables -nvL 来查看,见下图,
可以看到没有 80 端口,要想让 Windows 访问 80 端口,可以使用命令 iptables -I INPUT -p tcp --dport 80 -j ACCEPT ,临时加上 80 端口,见下图,
执行完上述命令,回到 Windows 的 cmd 上,重新输入刚才的命令 telnet 192.168.218.128 80,回车,见下图,
进入这样子的界面,就表示 80 端口通了。按住 ctrl+】,就可以退出上图界面,再输入命令 quit,可以返回到原来的界面。见下图,
再回到浏览器上刷新刚才的IP地址,见下图,
可以看到几个大字“It works!”,这样子就表示可以访问了。
回到 putty 上,输入命令 vim /usr/local/apache2.4/conf/httpd.conf,回车,搜索 /Require,回车,见下图,
这边需要把上图两个红色框框里的内容做个更改,见下图,
保存并退出。改完配置后,使用命令 /usr/local/apache2.4/bin/apachectl -t ,来检查配置文件的语法是否正确。见下图,
可以看到结果是 OK,说明配置文件的语法没有问题。可以故意在配置文件里面加一些任意内容,见下图,
保存并退出,重新执行命令 /usr/local/apache2.4/bin/apachectl -t,见下图,
就能看到报错了,所以这是个很有用的命令,可以检测配置文件的语法。再把配置文件改回去,这边不显示过程了。接着重新加载配置文件,使用命令 /usr/local/apache2.4/bin/apachectl graceful,回车,见下图,
然后回到浏览器上,刷新刚才的 IP 地址,见下图,
就会看到显示禁止的页面,就是不允许访问的意思。所以,回到配置文件那边,要把两边的内容都改为 granted,保存并退出,见下图,
这样才可以保证网页是允许访问的。
3、AddType application/x-httpd-php .php
4、DirectoryIndex index.html index.php
增加一行与 php 相关的内容,输入命令 vim /usr/local/apache2.4/conf/httpd.conf,回车,搜索 /AddType,回车,找到下图内容,
增加红色框框的内容 AddType application/x-httpd-php .php,再次搜索 /Index,回车,找到下图内容,
增加红色框框的内容 index.php,保存并退出。然后检查一下配置文件语法,并重新加载配置文件,见下图,
现在来验证一下,apache 能不能支持解析 php,先来写一个测试的 php 脚本,输入命令 vi /usr/local/apache2.4/htdocs/1.php,回车,见下图,
输入上图内容,保存并退出。接着回到浏览器,访问地址 192.168.218.128/1.php,
可以看到这个很漂亮的页面,说明php就支持解析成功了。现在来看一下,不支持解析的话,会出现什么页面?到 putty 上更改配置文件,输入命令 vim /usr/local/apache2.4/conf/httpd.conf,回车,见下图,
将上图红色框框的这一行,用#号注释掉,保存并退出。接着检查和加载配置文件,见下图,
然后回到浏览器,刷新页面,见下图,
出现的就是源代码,这就是php不能解析的情况。所以,以后碰到php不能解析的情况,就要检查一下apache文件,首先要检查php有没有加载,使用命令 /usr/local/apache2.4/bin/apachectl -M,回车,见下图,
可以看到最后一项有php5。如果没有加载的话,要看一下有没有这个模块文件,输入命令 ls /usr/local/apache2.4/modules/libphp5.so,回车,见下图,
没有这个文件的话,就无法加载php。如果有文件,而加载项里面没有显示php的话,就要检查配置文件了,输入命令 vim /usr/local/apache2.4/conf/httpd.conf,回车,搜索 /libphp5.so,见下图,
查看有没有上图红色框框这一行,没有的话,肯定就不能解析了。接下来继续检查,搜索 /AddType,回车,见下图,
查看有没有红色框框这一行,然后仔细认真查看,红色框框的内容格式是否正确,这边可以使用命令 /usr/local/apache2.4/bin/apachectl -t 来检查。接着搜索 /index.php,回车,见下图,
注意上图红色框框的内容是否有添加上去。这个是索引的作用,使用命令 ls /usr/local/apache2.4/htdocs/,回车,见下图,
里面有个 index.html 文件,这就是之前在上上图定义了 index.php,这边就可以直接跳转访问 index.html 这个文件,所以在浏览器上访问 192.168.218.128 时,会出现 It works!,这几个字。
因php5和php7不能共存,现在来试试php7。进入配置文件,搜索 /libphp,回车,见下图,
更改上图红色框框的内容,见下图,
保存并退出,接着检查和加载配置文件,见下图,
回到 浏览器,刷新页面,见下图,
也是可以看到这个漂亮的页面,这边注意版本号,和前面的php5是不一样的。说明php7也生效了,可以解析的。在putty上输入命令 /usr/local/php7/bin/php -i |less,回车,见下图,
可以看到,网页上显示的内容和这边的内容,基本上是一致的。按字母 q 可以退出上图界面。
以上是关于Apache 和 PHP 结合的主要内容,如果未能解决你的问题,请参考以下文章