解放 WIN7 的 80 端口

貌似是做了什么更新,或者装了 WebMatrix 之后,就发现个怪事情。Nginx 启动不了,报告端口被占。原来为了省事就改了 81,但想想也不能那么回事啊,80 到底在干嘛呢?

> netstat -ano


80 端口居然被 PID 为 4 的进程所占据,更令人惊讶的是 PID=4 的是 System

Google 了一番,有说 关闭 “World Wide Web Publishing Service” 的,有说是 关闭 IIS 信息服务 的,更有是 修改注册表 的…… 除了注册表实在不想改,其它都试了下,WWW 发布服务根本没找到,IIS 信息服务也没有打开。这时候就蛋疼了。

往往疼能激发潜能。在将所有服务按状态排序之后,逐一检查所有已启动项。迅速得到一个可疑项:“Web 部署代理服务”。

设置手动启动并禁用之。

再检查 80 端口,成功解放。

真搞不明白,为啥微软要搞那么多名目来侵占跟 System 毫不相干的 80 端口呢?

path设置不当导致PHP无法连接数据库

系统运行得好好的,不过看不惯McAfee运行几天之后会劫持相当大内存,删之。

重启后发现drupal offsite了,提示说数据库连接问题,请检查settings.php云云。

莫名其妙,之前还运行良好,突然连接不上,应该是外部原因,不过保险起见,检查settings.php,无异样。

头大,尝试用mysql命令连接数据库,居然报告

'mysql' is not recognized as an internal or external command,
operable program or batch file.

再尝试Start菜单里面的MySQL Command Line Client,可用。

难道系统环境变量出问题,一看path,发现一堆疑似迅雷看看造成的重复路径,删之,mysql的bin路径不翼而飞,插之。

重启apache服务器,drupal 依然 off。查看apache access log,最后的启动日志里面有好几行类似于

PHP Warning: PHP Startup: Unable to load dynamic library 'D:\\Program Files\\PHP\\ext\\php_mysqli.dll' - The specified module could not be found.\r\n in Unknown on line 0

报告一堆module无法载入的警告,这些和数据库连接大有关联,大致问题确定,只是不清楚如何解决。

直觉说修改了系统环境变量,应该重启机器,光重启apache可能不够,于是重启。

重启后,发觉问题居然解决了。

原理不确定,大概是由于path设置不当,既造成mysql之类的命令找不到,又导致apache载入module失败。