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 结合的主要内容,如果未能解决你的问题,请参考以下文章

4.Apache和PHP结合 Apache默认虚拟主机

apache和php结合apache的默认虚拟主机

Apache和PHP结合Apache默认虚拟主机

PHP和Apache结合 Apache默认虚拟主机

Apache和PHP结合,Apache默认虚拟主机

apache和php结合(配置httpd支持php)