Řešení 1:
Postupoval jsem podle návodu z Install Apache/PHP 5.4.10 na Fedoru 17/16, CentOS/RHEL 6.3/5.8 s mírnou úpravou. Trvalo to snad 10 min. Mé přesné příkazy jsou uvedeny níže. Všimněte si, že první příkaz musel být změněn oproti tomu, co je uvedeno v článku. Změna byla z epel-release-6-7.noarch.rpm
do epel-release-6-8.noarch.rpm
.
-
Jak přidat repo, které poskytuje PHP 5.4, do yum?
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm yum install http://rpms.remirepo.net/enterprise/remi-release-6.rpm
-
Může to bez problémů nahradit současnou verzi PHP v CentOS? Pro mě fungovaly následující příkazy a žádná z mých stávajících webových stránek PHP se nerozbila. Váš počet najetých kilometrů se může lišit.
yum --enablerepo=remi install httpd php php-common yum --enablerepo=remi install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml service httpd restart
-
Jak se mohu přepnout zpět na oficiální repo, když podporuje PHP5.4? Netestoval jsem příkazy k odstranění a opětovné instalaci PHP z repozitářů CentOS, ale měly by fungovat.
# Remove the Remi packages. Note the reversed command order yum remove php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml yum remove httpd php php-common # Install the CentOS packages. yum install httpd php php-common yum install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
-
Bude nějaký potenciál prolomit PHP moduly, které [sic] aktuálně používám? Ano. Použitím nejnovější verze CentOS (6.2?) se Zend nainstalovaným pomocí instalačního programu Zend výše uvedený upgrade zlomil Zend.
Všechny výše uvedené příkazy byly spuštěny jako root
. Nejlepším postupem je přihlásit se jako neprivilegovaný uživatel a použít sudo
. (Toto je vývojový VM s aktuálním snímkem...)
Také ve výchozím nastavení nepovolujte úložiště Remi - v minulosti jsem byl chytrý a ve výchozím nastavení jsem jej povolil a věci se pokazily, dokonce i s prioritou úložiště.
Řešení 2:
Zlepšení oproti jiné odpovědi Webtatic:
1. Pomocí průvodce na http://www.webtatic.com/packages/php54/:
rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
2. Nejprve musíte vidět, jaké stávající nainstalované balíčky je třeba nahradit, můžete to udělat pomocí yum shellu, abyste zkombinovali odstranění php-common a instalaci php54w-common v jedné transakci (takže sdílené závislosti nejsou odstraněny)
yum shell
> remove php-common
> install php54w-common
> run
…
Is this ok [y/N]: n
Neříkejte "y" výsledkům, ale poznamenejte si všechny balíčky uvedené v "Odstranění závislostí", např.
Removing for dependencies:
php
php-cli
php-pear
php-pecl-memcache
php-mysql
Pokud jsou v tomto seznamu jiné balíčky než php*, nemůžete plynule přejít na Webtatic PHP 5.4, ale budete muset prozkoumat alternativy. Webtatic má náhradní balíčky pro všechny základní balíčky php (potvrzení viz balíčky uvedené na stránce s odkazem v 1.), takže by neměly nastat žádné problémy, pokud nepoužíváte jiná úložiště třetích stran, která mají balíčky nainstalované v závislosti na konkrétní verzi php nainstalováno.
Pro zbytek instalace (stále v yum shellu), stačí odstranit tyto balíčky a nainstalovat jejich protějšky php54w-*:
> remove php-common php php-cli php-pear php-pecl-memcache php-mysql
> install php54w-common php54w php54w-cli php54w-pear php54w-pecl-memcache php54w-mysql
> run
…
Is this ok [y/N]: y
Poté byste měli v seznamu vidět pouze balíčky, které jste nastavili k odstranění a instalaci, a můžete instalaci potvrdit a přepnout. Jakékoli služby aktuálně spuštěné s načteným php budou muset být restartovány, například httpd nebo php-fpm.
Vzhledem k tomu, že je to „bezproblémové“, jakékoli změny softwaru, ke kterým dojde v době, kdy uživatelé mají přístup na webovou stránku, by měly mít důsledky plně pochopené. Odebírání a přidávání sdílených knihoven, když je proces ještě nenačetl, by se mohly potenciálně načíst, zatímco sdílená knihovna tam není. Je lepší provádět upgrady softwaru, jako je tento, offline a nejlépe nejprve testovat na neprodukčním stroji, abyste ověřili, že proces funguje podle očekávání.
3. Chcete-li přejít na hypotetický základní balíček CentOS php54 (CentOS 5 používal předponu php53), stačí provést výše uvedené kroky a nahradit odstranění php odstraněním php54w a instalaci php54w instalací php54, např.
yum shell
> remove php54w-common
> install php54-common
> run
…
Is this ok [y/N]: n
…
> remove php54w-common php54w php54w-cli php54w-pear php54w-pecl-memcache php54w-mysql
> install php54-common php54 php54-cli php54-pear php54-pecl-memcache php54-mysql
> run
Is this ok [y/N]: y
Nicméně pokud jde o přechod na hypotetický základ php54, pravděpodobně nebudou existovat žádné alternativy pro některé balíčky (např. v CentOS 5 nebylo žádné rozšíření php53-pecl-memcache) a Webtatic má balíčky, které nejsou dostupné v základu CentOS (např. php54w -pecl-zendopcache). Pokud chybí, pak obvykle nemáte jinou možnost, než použít pecl přímo k jejich instalaci.
4. Jakýkoli upgrade PHP může obsahovat chyby a webové stránky by měly být znovu otestovány. To není specifické pro Webtatic, ale obecná myšlenka, že nové funkce přinášejí nové chyby.
Na rozdíl od úložiště Remi v přijaté odpovědi úložiště Webtatic EL6 nikdy nepoužívá stejné názvy balíčků jako základní úložiště CentOS, takže nepřepíše instalaci/upgrade balíčků, na které nechcete přejít, a jako takové je ve výchozím nastavení povoleno.
Prohlášení:Jsem vlastníkem/správcem Webtatic