1,修改ServerName
在启动apache时,会有类似错误提示
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl restart AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
如果不想出现这种错误提示,那么进到 /usr/local/apache2.4/conf/httpd.conf 中找到ServerName,并去掉#注释,保存退出。
重启apache,出现下图错误
进到 /usr/local/apache2.4/conf/httpd.conf 中,将php7注释掉,只让apache只加载php5
保存退出后,重启apache,一切正常
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl restart httpd not running, trying to start [root@localhost ~]# ps aux | grep httpd root 45504 0.2 0.8 253576 8892 ? Ss 21:48 0:00 /usr/local/apache2.4/bin/httpd -k restart daemon 45505 0.0 0.6 540404 6936 ? Sl 21:48 0:00 /usr/local/apache2.4/bin/httpd -k restart daemon 45506 0.0 0.8 540404 8972 ? Sl 21:48 0:00 /usr/local/apache2.4/bin/httpd -k restart daemon 45507 0.0 0.8 540404 8976 ? Sl 21:48 0:00 /usr/local/apache2.4/bin/httpd -k restart root 45590 0.0 0.0 112676 984 pts/2 S+ 21:49 0:00 grep --color=auto httpd
2,修改Require all denied
[root@localhost ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
访问192.168.65.128,从无法访问变为 It works!
在windows中,打开telnet,用telnet 192.168.65.128 80,来查看联通情况
联通之后会跳到次界面
如果不通,则显示正在连接
改完之后,无法访问192.168.65.128
因此,需要把配置文件 Require all denied 改为 Require all granted
·检查配置文件语法:
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK
·重新加载配置:
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful
(优点是不会重启服务器,最多加载不成功,不会把进城杀掉)
3,增加一行 AddType application/x-httpd-php .php ,否则php无法解析
4,把 DirectoryIndex index.html 改为 DirectoryIndex index.html index.php
验证apache支不支持php解析
测试的php脚本:
vim /usr/local/apache2.4/htodcs/1.php
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful
访问http://192.168.65.128/1.php,
如果访问192.168.65.128/1.php时,出现
则需要检查Apache配置文件
首先,查看有没有加载php5模块
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -M
看看有没有 /usr/local/apache2.4/modules/libphp5.so 文件
如果有libphp5.so文件,则要查看apache配置文件中有没有加载libphp5.so
然后,检查配置文件有没有 AddType application/x-httpd-php .php 行
再检查 DirectoryIndex index.html index.php 这一行,但这一行不影响
index.php ,默认能跳转到index.php下面去
快捷键:ctrl + r 输入关键字,可以搜索到命令历史中有关关键字的命令
把php5禁掉,只用php7
再配置文件中把libphp5.so注释掉,用libphp7.so
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful
访问http://192.168.65.128/1.php时,版本出现了变化
/usr/local/php7/bin/php -i | less 的结果时上图的文本形式显示。
11.16/11.17 Apache默认虚拟主机
·httpd一个服务下运行了多个网站,多个域名
DNS未生效情况下,可以定义windows中的hosts文件
格式为:ip 域名 域名 。。。
/usr/local/apache2.4/conf/httpd.conf只能定义一个ServerName
[root@localhost ~]# vim /usr/local/apache2.4/conf/httpd.conf
搜索httpd-vhost,去掉#
编辑虚拟主机配置文件(可以定义多个ServerName):
[root@localhost ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
ServerAdmin 管理员邮箱,可删掉
DocumentRoot 网站根目录
ServerName 域名
ServerAlias 别名(可取多个)
ErrorLog 错误日志
CustomLog 访问日志
创建目录
[root@localhost ~]# mkdir /data/wwwroot/ [root@localhost ~]# mkdir /data/wwwroot/abc.com [root@localhost ~]# mkdir /data/wwwroot/111.com [root@localhost ~]# vim /data/wwwroot/abc.com/index.php
定义一个index.php
可不带结尾
111.com中也定义一个php
[root@localhost ~]# vim /data/wwwroot/111.com/index.php
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful
如果找不到域名配置,就会去找默认虚拟主机配置文件,例如www.111.com在配置文件中就没有这个域名或别名,因此直接找默认配置,也就是第一段,所以是abc.com
如有错误,欢迎指正,互相学习。
2018-3-1 10周2次课 Apache和PHP结合、Apache默认虚拟主机
原文地址:http://blog.51cto.com/11530642/2074500