Contents
  1. 1. 0x01: 报错信息
  2. 2. 0x02: 端口冲突
  3. 3. 0x03: 服务冲突
  4. 4. 0x04: Warning: strftime() 未设置时区

在上软件测试课时,使用XAMPP搭建testlink过程中出现了apache服务器启动不了的问题,上课时在本机并没有解决,临时用的phpstudy搭建环境安装,课后研究发现问题。

0x01: 报错信息

20:20:57  [Apache]     Error: Apache shutdown unexpectedly.
20:20:57  [Apache]     This may be due to a blocked port, missing dependencies, 
20:20:57  [Apache]     improper privileges, a crash, or a shutdown by another method.
20:20:57  [Apache]     Check the "/xampp/apache/logs/error.log" file
20:20:57  [Apache]     and the Windows Event Viewer for more 

0x02: 端口冲突

搜索后,网上大多都说是端口冲突,遂更改端口。

点击apache右面的Config按钮,打开httpd.conf 找到Listen 80修改为其他未被占用的端口

结果,修改为了8080,8081,8000…(emmmmmm)等确定不会被占用的端口后仍然出现该错误提示。

0x03: 服务冲突

后来由同学提醒发现了和Vmware存在冲突
课后仔细研究发现,

C:\Users\KEY>netstat -aon|findstr "443"
TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       7460
TCP    10.232.216.11:52933    106.11.62.15:443       ESTABLISHED     9696
TCP    10.232.216.11:62465    52.230.84.217:443      ESTABLISHED     4464
TCP    [::]:443               [::]:0                 LISTENING       7460

VMware占用了443端口

VMware中的Shared VMs占用了443端口,Shared VMs是用于远程连接服务器,注册、管理虚拟机用的,也就是可以用vmware作为虚拟机服务器。对一般同学来说用处不大,可以直接禁用掉这个功能。

解决方法:
1.直接禁用掉VMware中的Shared VMs功能

编辑->首选项->共享虚拟机->禁用共享

2.在服务中禁用掉VMeare Workstation Serveice服务
3.修改httpd-ssl.conf中的443端口为其他数字

点击apache右面的Config按钮,打开httpd-ssl.conf 找到Listen 443修改为其他未被占用的端口,例如442等

修改后再次问题解决,点击Start,成功启动。
apache服务器启动起来了,问题并没有完全解决。

0x04: Warning: strftime() 未设置时区

安装完成后,页面未能正常显示,出现了php错误代码

Warning: strftime(): It is not safe to rely on the system's timezone settings. You are 
*required* to use the date.timezone setting or the date_default_timezone_set() function. 
In case you used any of those methods and you are still getting this warning, you most 
likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but 
please set date.timezone to select your timezone. in 
C:\Apache24\htdocs\testlink\config.inc.php on line 781

根据错误信息翻译得

依靠系统的时区设置是不安全的。你*需要*使用date.timezone设置或date_default_timezone_set()功能。
如果你用那些方法,你仍然得到这样的警告,你最有可能拼错的时区标识符。我们选择的时区的UTC的现在,
但请date.timezone选择您的时区。

php.ini中设置时区解决问题

打开php.ini找到date.timezone = "" 如有去掉前面的分号,并将""内改为Asia/Shanghai 
Contents
  1. 1. 0x01: 报错信息
  2. 2. 0x02: 端口冲突
  3. 3. 0x03: 服务冲突
  4. 4. 0x04: Warning: strftime() 未设置时区