Php

Yum 不會在 Amazon Linux 上重新安裝 PHP

  • February 18, 2014

歸根結底,這個問題是關於 Yum 和 Amazon Linux AMI(請參閱該部分的末尾),但首先我將介紹一些背景知識,說明我是如何陷入這種境地的。

我從原始碼安裝了 PHP

我正在使用 Amazon Web Services 託管的 Web 伺服器上設置一個新的 PHP 應用程序。EC2 實例正在執行“Amazon Linux AMI 版本 2012.09”(根據 /etc/issue)。我不是此伺服器的主要管理員,因此我想限制我所做更改的影響。

該伺服器上已經執行了一些 PHP 應用程序。我需要比他們使用的更新版本的 PHP。他們使用的是發行包中的 5.3 版本,對我來說太舊了。

我想我會下載 PHP 原始碼,自己建構它並與其他版本一起執行。(我將如何設置是另一回事,我不會在這裡討論。)

我使用以下選項配置了我的 PHP 建構:

--prefix=/opt/php-5.5.9
--with-openssl
--with-mcrypt
--with-mysql
--with-pdo-mysql
--enable-fpm
--with-apxs2=/usr/sbin/apxs

然後,我切換到 root 並執行make install. (回想起來,以 root 身份執行此操作是一個錯誤,我應該在安裝目錄上設置使用者寫入權限並以我的使用者身份安裝,這樣我就可以確定沒有文件被放在安裝目錄之外。現在為時已晚.)

然後我注意到網路伺服器沒有響應。重新啟動後,它工作正常。我看了看,注意到對於phpversion,伺服器現在報告我剛剛安裝的新版本/opt,而不是我打算保留的發行版。事實證明,make install繼續前進並取代了現有的libphp5.so. RPM 報告:

[root@xxxx etc]# rpm -V php
S.5....T.    /usr/lib64/httpd/modules/libphp5.so

據我所知,新版本的一切仍然正常,所以很可能沒有造成任何傷害。但是,我寧願保留舊版本的 PHP,這樣包仍然可以由包管理器管理。這是我將新版本放入/opt.

試圖放回舊版本,百勝失敗

我試圖恢復舊版本的libphp5.sowith yum reinstall。這是輸出:

[root@xxxx etc]# yum reinstall php
Loaded plugins: fastestmirror, local, priorities, security, update-motd, upgrade-helper
Setting up Reinstall Process
Loading mirror speeds from cached hostfile
* amzn-main: packages.us-east-1.amazonaws.com
* amzn-updates: packages.us-east-1.amazonaws.com
amzn-main                                                               | 2.1 kB     00:00
amzn-updates                                                            | 2.3 kB     00:00
265 packages excluded due to repository priority protections
Installed package php-5.3.20-1.29.amzn1.x86_64 (from amzn-updates) not available.
Nothing to do

從這條消息中,我不清楚問題是什麼。是不是在更新伺服器上找不到包?伺服器本身是否不可用(希望是暫時的)?還是由於優先保護而將軟體包排除在外,因此拒絕重新安裝它?

這個問題的最佳解決方案是什麼,可以讓我恢復舊版本的 PHP 並將其重新置於包管理器的控制之下?

Amazon 將 PHP 5.3.20 包替換為更新的點版本(用於安全修復等)。只需更新它:

yum update php

看在皮特的份上,不要在生產中做這些事情!啟動一個新實例並在那裡進行實驗。

引用自:https://serverfault.com/questions/576332