【问题标题】:Failed to install php 5.6 mssql - Centos 7无法安装 php 5.6 mssql - Centos 7
【发布时间】:2015-12-31 02:59:05
【问题描述】:

我正在尝试将在 Windows 网络服务器上运行的应用程序移动到在 Centos 7 上运行的 linux 网络服务器。 它基于调用 Microsoft SQL 过程的应用程序,并且我在构建它时使用了 sqlsrv 驱动程序。但是现在当我将它移到新服务器时,它显然无法正常工作,因为 sqlsrv 驱动程序它不受我所支持的 linux 支持读过。

问题是我正在尝试安装 php-mssql 以重写我的代码以使用此驱动程序,但我无法使用 PHP 5.6.13 在 Centos 7 上安装该软件包。当我尝试安装软件包时,我得到以下信息,但我不知道如何修复它或更进一步:

[root@localhost /]# yum install php56w-mssql
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.ines.lug.ro
* epel: fedora.mirrors.telekom.ro
* extras: ftp.ines.lug.ro
* updates: ftp.ines.lug.ro
* webtatic: uk.repo.webtatic.com
Resolving Dependencies
--> Running transaction check
---> Package php56w-mssql.x86_64 0:5.6.13-1.w7 will be installed
--> Processing Dependency: php56w-pdo(x86-64) = 5.6.13-1.w7 for package: php56w-mssql-5.6.13-1.w7.x86_64
--> Processing Dependency: libsybdb.so.5()(64bit) for package: php56w-mssql-5.6.13-1.w7.x86_64
--> Running transaction check
---> Package freetds.x86_64 0:0.91-12.git0a42888.el7 will be installed
--> Processing Dependency: libodbcinst.so.2()(64bit) for package: freetds-0.91-12.git0a42888.el7.x86_64
--> Processing Dependency: libodbc.so.2()(64bit) for package: freetds-0.91-12.git0a42888.el7.x86_64
---> Package php56w-pdo.x86_64 0:5.6.13-1.w7 will be installed
--> Processing Dependency: php56w-common(x86-64) = 5.6.13-1.w7 for package: php56w-pdo-5.6.13-1.w7.x86_64
--> Running transaction check
---> Package php56w-common.x86_64 0:5.6.13-1.w7 will be installed
---> Package unixODBC.x86_64 0:2.3.1-10.el7 will be installed
--> Processing Dependency: libltdl.so.7()(64bit) for package: unixODBC-2.3.1-10.el7.x86_64
--> Running transaction check
---> Package libtool-ltdl.x86_64 0:2.4.2-20.el7 will be installed
Removing php56w-pdo.x86_64 0:5.6.13-1.w7 - u due to obsoletes from installed php-pdo-5.6.13-1.el7.remi.x86_64
Removing php56w-common.x86_64 0:5.6.13-1.w7 - u due to obsoletes from installed php-common-5.6.13-1.el7.remi.x86_64
--> Restarting Dependency Resolution with new changes.
--> Running transaction check
---> Package php56w-common.x86_64 0:5.6.13-1.w7 will be installed
---> Package php56w-pdo.x86_64 0:5.6.13-1.w7 will be installed
--> Processing Dependency: php56w-pdo(x86-64) = 5.6.13-1.w7 for package: php56w-mssql-5.6.13-1.w7.x86_64
--> Finished Dependency Resolution
Error: Package: php56w-mssql-5.6.13-1.w7.x86_64 (webtatic)
       Requires: php56w-pdo(x86-64) = 5.6.13-1.w7
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

你有什么建议吗?

谢谢

【问题讨论】:

  • 看起来您从不同的存储库安装了 PHP(和/或其扩展)。它抱怨php56w-pdo vs php-pdophp56w-common vs php-common。一个来自 webtatic,另一个来自 remi。您应该从同一个 repo 安装 PHP 和所有扩展。
  • 所以我应该删除所有并重新安装?或者你有什么建议?
  • 你能做到yum install php56-mssql吗?那个包是否存在(它也可能被称为php56-php-mssql)?这应该让你所有的包都来自同一个仓库。
  • 不,它说:没有包 php56-mssql 可用。

标签: php sql-server linux centos yum


【解决方案1】:

根据输出,PHP 是从未启用的“remi-php56”安装的(默认情况下)。启用它是个好主意,以避免此类问题。

yum-config-manager --enable remi-php56

然后

yum install php-mssql

混合各种第 3 方存储库的想法很糟糕。所以@machavity 建议从 webtatic 中排除 php 包是正确的。

【讨论】:

  • 注意:永久启用“remi-php56”(如果你想要 PHP 5.6)是明智的,因为这个 repo 只提供 PHP 及其扩展。
  • 您好,谢谢您的建议,我已经从 webstatic 中排除了,我会尝试您的建议。谢谢你的回答。
  • 它通过禁用 webstatic 并激活 remi-php56 完美运行。谢谢
【解决方案2】:

那里有两个相互竞争的软件包。 php.remiphp56.webtatic

看起来 remi 已经安装好了。所以你需要做的是找到你的 webtatic repo 文件(可能类似于/etc/yum.repos.d/webtatic.repo)并在[webtatic] repo 下方添加这一行

exclude=php56*

这应该会阻止 webtatic repo 向您提供 PHP 文件。那么你应该可以做到

yum install php-mssql

将从 remi 中提取并使用已安装的内容

【讨论】:

  • 如果我按照您的建议进行操作,它将尝试为 php 5.4 而不是 5.6 安装包,并且它正在为 php 5.4 请求其他一些包。
  • @AndreiKap 确保你激活了 remi 5.6 repo
  • 我添加了一个额外的响应,因为如果没有启用 remi,'yum install php-mssql' 将不起作用。
猜你喜欢
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
  • 2015-04-28
  • 1970-01-01
  • 2016-08-07
  • 2020-08-04
  • 2019-03-02
  • 2016-10-16
相关资源
最近更新 更多