我在公司使用的旧服务器上运行 PHP 5.3。我在 AWS 服务器上运行 PHP 5.5。这两台服务器都是 Ubuntu。我的应用程序在 AWS 服务器上运行良好。但是当我将其迁移到旧服务器时,它停止工作并不断告诉我存在数据库连接问题。现在我反复检查了几次,确认登录没有问题。错误日志显示 PHP Warning: mysqli::mysqli(): [2002] Connection refused
。我检查了配置。似乎问题出在版本上,因为我用编写了应用程序mysqli
。
按照步骤这个问题和这一页,我尝试将 PHP 版本升级到 5.5。但是没有成功,因为页面info.php
仍然保持不变。所以我想也许我只需删除 apache2 服务器,然后通过发出以下命令重新开始:
apt-get remove apache2
。
但在我这样做之后,PHP 就停止工作了。每当我尝试在浏览器中打开 php 文件时,它都会自动下载它。现在我有点不知道下一步该怎么做了。我是否应该尝试完全删除 apache2,然后从头开始重新安装它?我一开始安装了 apache2 服务器。该服务器相当老旧。
顺便说一句,我检查了 apache2 conf 设置并确保以下内容正确:选项索引 FollowSymLinks AllowOverride All 要求全部授予
答案1
第一步:重新安装Apache。
第二步:查看你的 Apache 设置,并确保以下行
LoadModule php5_module /usr/lib/apache2/modules/libphp5.so
指向正确的路径(/usr/lib/apache2/modules/libphp5.so
就我而言)。
使用find
,嗯,找到 PHP 模块的位置:
find /usr -name libphp5.so
一般不建议在服务器上安装来自 PPA 的东西,因为它们通常提供未经测试(或未经过广泛测试)的代码。可能是您的新 PHP 将其库安装在另一条路径上,而您的旧 PHP 仍在使用中,这让您感到困惑。
顺便提一下,尝试解决正确的问题。如果您的 PHP 在更新之前运行良好,而在更新后停止正常工作,则 Apache 不是罪魁祸首。只关注 PHP 会更容易解决问题,而不会丢失所有 Apache 配置(我希望您不会使用清除删除时)。
答案2
我最终对该问题的解决方案是:使用以下命令删除 LAMP 堆栈:
sudo apt-get remove apache2 apache2-mpm-prefork apache2-utils apache2.2-common libapache2-mod-php5 libapr1 libaprutil1 libdbd-mysql-perl libdbi-perl libmysqlclient15off libnet-daemon-perl libplrpc-perl libpq5 mysql-client-5.0 mysql-common mysql-server mysql-server-5.0 php5-common php5-mysql
然后我使用以下命令删除 PPA:
sudo add-apt-repository --remove ppa:ondrej/php5
然后我重新安装了 LAMP 堆栈。之后,我将数据库登录 php 文件更改为 localhost,而不是 127.0.0.1。好了!问题解决了!