я пытаюсь переместить приложение, которое работало на веб-сервере Windows, на веб-сервер Linux, работающий на Centos 7.
Приложение основано на вызове процедур Microsoft SQL, и я использовал драйвер sqlsrv, когда создавал его. Но теперь, когда я переместил его на новый сервер, очевидно, он не работает, потому что драйвер sqlsrv не поддерживается linux из того, что я прочитал.
Проблема в том, что я пытаюсь установить php-mssql, чтобы переписать мой код для использования этого драйвера, но я не могу установить пакет на Centos 7 с использованием PHP 5.6.13. Когда я пытаюсь установить пакет, я получаю следующее и не знаю, как это исправить или пойти дальше:
[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 установлен из «remi-php56», который не включен (по умолчанию). Хорошая идея, чтобы включить его, чтобы избежать таких проблем.
yum-config-manager --enable remi-php56
А потом
yum install php-mssql
И ужасная идея смешивать различные сторонние репозитории. Поэтому предложение @machavity об исключении пакетов php из webtatic является правильным.
У вас там два конкурирующих пакета. php.remi
против php56.webtatic
Похоже, что реми уже установлена. Итак, что вам нужно сделать, это найти свой веб-файл репо (вероятно, что-то вроде /etc/yum.repos.d/webtatic.repo
) и добавьте эту строку ниже [webtatic]
Сделки рЕПО
exclude=php56*
Это должно помешать веб-репозиторию кормить вас PHP-файлами. Тогда вы должны быть в состоянии сделать
yum install php-mssql
Который будет тянуть с реми и работать с тем, что уже установлено