2015-10-02 220 views
0

我試圖將運行在windows web服務器上的應用程序移動到在Centos 7上運行的linux web服務器。 它基於調用Microsoft SQL過程的應用程序和當我創建它時,我使用了sqlsrv驅動程序。但是現在,當我將它移動到新服務器時,顯然它不能正常工作,因爲sqlsrv驅動程序並不支持Linux讀取的內容。未能安裝php 5.6 mssql - Centos 7

的問題是,我試圖安裝PHP-MSSQL爲了重新寫我的代碼使用該驅動程序,但使用PHP 5.6.13我不能在CentOS 7安裝軟件包。當我嘗試安裝包我碰到下面的,我不知道如何解決它或能走得更遠:

[[email protected] /]# 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 

你有什麼建議嗎?

謝謝

+0

看起來你有不同的回購協議安裝PHP(和/或它的擴展)。它抱怨'php56w-pdo' vs'php-pdo'和'php56w-common' vs'php-common'。一個來自webtatic,另一個來自remi。你應該安裝PHP和所有來自同一個倉庫的擴展。 –

+0

所以我應該刪除所有並重新安裝?或者你建議別的? –

+0

你可以做'yum安裝php56-mssql'嗎?該軟件包是否存在(它也可能被稱爲'php56-php-mssql')?這應該讓你的所有包都來自同一個回購站。 –

回答

3

你有兩個競爭的軟件包在那裏。 php.remi VS php56.webtatic

看起來已經安裝了雷米。所以,你需要做的是找到你的webtatic回購文件(大概就像/etc/yum.repos.d/webtatic.repo),並添加下面的[webtatic]回購

exclude=php56* 

這應該防止webtatic回購從餵你的PHP文件,這條線。那麼你應該能夠做到

yum install php-mssql 

這將拉動從雷米以怎樣的已經安裝

+0

如果我按照你的建議嘗試安裝PHP 5.4的包而不是5.6,並且它正在爲php 5.4請求其他包。 –

+0

@AndreiKap確保您有雷米5.6回購激活 – Machavity

+0

我增加一個額外的迴應,「百勝安裝PHP-MSSQL」如果沒有啓用雷米將無法正常工作。 –

5

根據輸出工作,PHP是從一個未啓用(默認)「雷米 - php56」安裝。好主意,以避免這樣的問題。

yum-config-manager --enable remi-php56 

然後

yum install php-mssql 

而且可怕的想法搭配各種第三方庫。所以@machavity提議從webtatic中排除php包是正確的。

+0

注意:由於此回購僅提供PHP及其擴展,因此是永久啓用「remi-php56」(如果您需要PHP 5.6)的聖人。 –

+0

你好,謝謝你的建議,我已經排除了webstatic,我會嘗試你的建議。謝謝你的回答。 –

+0

它通過禁用webstatic並激活remi-php56完美工作。謝謝 –