سؤال كيف يمكنني الرجوع من إصدار PHP 7 إلى PHP 5.6 على Ubuntu 16.04؟ [مكرر]


هذا السؤال لديه بالفعل إجابة هنا:

أحاول إرجاع إصدار PHP إلى 5.6 من 7 وعلى الرغم من أنني أزلت PHP 7 ثم قمت بتثبيت PHP 5.6 فما زلت أقوم بتشغيل الإصدار 7.

هل هناك طريقة بسيطة للتنقل عبر إصدارات PHP حيث يتم تكوين apache و phpMyAdmin و co بشكل مناسب؟

وهناك طريقة بسيطة لتغيير الإصدار الحالي من PHP على الطاير وحتى الموقع عن طريق موقع سيكون أمرا رائعا.


157
2018-04-24 09:21


الأصل


يبدو أني قد قمت بتثبيت 5.6 ولكن كل php الخاص بي يتم عرضه كنص الآن. - dibs
ما خرج dpkg -l | grep php| awk '{print $2}' |tr "\n" " " ؟ - storm
dh-php libapache2-mod-php5 php-common php-json php-pear php-xml php5-cli php5-common php5-json php5-readline php5.6 php5.6-bz2 php5.6-cli php5.6-common php5.6-curl php5.6-dev php5.6-fpm php5.6-gd php5.6-json php5.6-mcrypt php5.6-mysql php5.6-opcache php5.6-readline php7.0-common php7.0-json php7.0-xml pkg-php-tools - dibs
أرى بعض حزم php7 هناك إزالتها aptitude purge php7.0-common php7.0-json php7.0-xml  كما أريد أن أعرف ما تقصد به all my php is rendering as text now - storm
هذا يعني أنك تفوت libapache2-mod-php5.6 حزمة ... انظر جوابي أدناه ، لا تحتاج إلى إزالة php7.0 - Postadelmaga


الأجوبة:


تحديث
اليوم حصلت مرة أخرى مشكلة مع تشغيل PHP 7 على الرغم من أنني قد تعطيل php7.0 وحدة اباتشي: phpinfo كان يعرض php 7 باستخدام fastCGI ...
... حتى إذا كنت بعد اتباع التعليمات التالية تواجه هذا الوضع ، قد تحتاج إلى تعطيل proxy_fcgi وحدة اباتشي:

sudo a2dismod proxy_fcgi proxy; sudo service apache2 restart

1. إعادة تثبيت PHP 5.6 

ما كان يعمل لي هو هذا الدليل: http://www.lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu

في الواقع ليست مطلوبة لإزالة php7.0يمكنك تثبيت php5.6 معًا (أيضًا لأنك ستعاني من مشكلة التبعية) phpmyadmin الحزمة التي تتطلب php7.0)

على افتراض libapache2-mod-php طريقة مناسبة لتمكين PHP في Apache ، يمكنك المتابعة بهذه الطريقة:

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.0 php5.6 php5.6-mysql php-gettext php5.6-mbstring php-mbstring php7.0-mbstring php-xdebug libapache2-mod-php5.6 libapache2-mod-php7.0

2. تبديل نسخة PHP:

  • من php5.6 إلى php7.0:

    • أباتشي:

      sudo a2dismod php5.6 ; sudo a2enmod php7.0 ; sudo service apache2 restart
      
    • CLI:

      sudo update-alternatives --set php /usr/bin/php7.0
      
  • من php7.0 إلى php5.6:

    • أباتشي:

      sudo a2dismod php7.0 ; sudo a2enmod php5.6 ; sudo service apache2 restart
      
    • CLI:

      sudo update-alternatives --set php /usr/bin/php5.6
      

296
2018-04-25 02:58



أنت على حق ، شكرا ، لقد أصلح الأوامر :) - Postadelmaga
Postadelmaga إنه يعمل على تغيير إصدار PHP لتطبيقات الويب. شكرا جزيلا! ولكن لا يزال CLI يعمل PHP7. هل تعرف كيفية تحويل ذلك إلى PHP5.6 أيضا؟ - John Linhart
أفضل طريقة للقيام بذلك هي إزالة حزم php من المخزون ، إضافة Ondrej ppa ثم تثبيت php7 و php5.6 ، تذكر أن لديك phpenmod -v 5.6 لتمكين وحدة php5.6 و phpenmod -v 7.0 لتمكين وحدة php 7.0 ، مزيد من المعلومات هنا disqus.com/home/discussion/serversforhackers/... - razor7
وظيفة حفظ يومي. - Shoaib Nawaz
Daenu ذلك لأن php -v سيظهر لك إصدار php cli ... الأمر المقترح هو Apache ... إذا فعلت phpinfo() في صفحة ويب سترى الفرق. - Postadelmaga


Ubuntu 16.04 يأتي مع php 7.0، و البعض php قد لا تزال التطبيقات تفشل php 7.0 لذلك ، في بعض الحالات ، قد يكون من المنطقي وجود كليهما php 7.0 و php 5.x، بحيث يمكنك اختيار الإصدار المراد استخدامه لاحتياجاتك في أي وقت.

يمكنك القيام بذلك مع:

xavi@computer# sudo su
root@computer# add-apt-repository ppa:ondrej/php
root@computer# apt-get update
root@computer# apt-get install php7.0 php5.6 php5.6-mysql php-gettext php5.6-mbstring php-xdebug libapache2-mod-php5.6 libapache2-mod-php7.0 php5.6-curl php5.6-gd php5.6-mcrypt php5.6-xml php5.6-xmlrpc

تثبيت كلا php5.6 & php7.0 كانت نظيفة في حالتي: لا شكوى من القضايا ، وما إلى ذلك.

للتبديل من php 5.6 إلى php 7.0 تحتاج إلى القيام بأمرين:

# For php in web apps
sudo a2dismod php5.6 && sudo a2enmod php7.0 && sudo service apache2 restart
# For php-cli in the command line
sudo ln -sfn /usr/bin/php7.0 /etc/alternatives/php

أو من php7.0 إلى php5.6:

# For php in web apps
sudo a2dismod php7.0 && sudo a2enmod php5.6 && sudo service apache2 restart
# For php-cli in the command line
sudo ln -sfn /usr/bin/php5.6 /etc/alternatives/php

يمكنك أيضًا التحقق بسرعة من الذي تستخدمه عن طريق تشغيل php -v.


48
2018-05-02 09:29



استعمال sudo a2dismod php7.0 && sudo a2enmod php5.6 && sudo service apache2 restart للتأكد من تشغيل الأوامر التالية فقط عندما تنجح قبل أن تنجح. اقترح تعديل على هذه الإجابة. - Videonauth
هذا هو أفضل إجابة لمن يرغب في تثبيت كليهما php5.6 و php7.0 على أوبونتو 16.04 - Amine Jallouli
عملت مثل السحر. أتمنى لو أستطيع أن أعيش ذلك عدة مرات. - shiva


يفتقد سؤالك لتفاصيل مهمة ، لذا سأجيب بشكل أوسع.

إذا افترضنا أنك تستخدم الحزم ، فهناك بعض التفاصيل المهمة:

  1. يمكن تكوين Apache2 لاستخدام إما apache2 SAPI باستخدام libapache2-mod-php7.0 الحزمة أو FPM SAPI باستخدام php7.0-fpm مع mod_proxy_fcgi.

  2. Ubuntu 16.04 لديه فقط PHP 7.0 في المستودعات ، يمكنك استخدامها ppa:ondrej/php لإضافة دعم لـ PHP 5.6 باستخدام نظام تسمية مماثل (على سبيل المثال ، libapache2-mod-php5.6 أو php5.6-fpm).

  3. إذا كنت تستخدم Apache2 SAPI (libapache2-mod-php*) ، تحتاج إلى تعطيل PHP 7.0 بعد تثبيت libapache2-mod-php5.6 عن طريق الركض a2dismod php7.0 وتمكين PHP 5.6 عن طريق تشغيل a2enmod php5.6.

  4. إذا كنت تستخدم FPM SAPI (php*-fpm) فأنت بحاجة إلى تغيير مقبس يونكس من /run/php/php7.0-fpm.sock إلى /run/php/php5.6-fpm.sock.

  5. يرجى تذكر أنه بالنسبة للوحدات المجمعة مع PHP (مثل MySQL) فإن اصطلاح التسمية هو phpX.Y-<ext> (f.e. php7.0-mysql و php5.6-mysql) ، ولكن بالنسبة لوحدات PECL الخارجية (على سبيل المثال APCu ، mongodb ، ...) فهي فقط php-<ext> (f.e. php-apcu، php-mongodb). أوصي بتشغيل apt-cache search php <ext> على نظامك للبحث عن اسم الحزمة الصحيحة قبل طرح أسئلة على الإنترنت.


11
2018-04-24 10:04



هل يمكنك توضيح كيفية تغيير مقبس يونيفيرم؟ - myol


أعتقد أنه يجب عليك إزالة حزم php الخاصة بك وتثبيت php5.6. يمكنك المتابعة على النحو التالي:

sudo aptitude purge dpkg -l | grep php| awk '{print $2}' |tr "\n" " "
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php5.6

يمكنك بعد ذلك التحقق من إصدار php الخاص بك للتأكد. يتم ذلك كما هو موضح أدناه:

php -v

5
2018-04-24 09:38



آمل أن تكون حقيقة أنك ستقوم بإزالة حزم php الحالية الخاصة بك وتثبيت php حديثًا مفيدة جدًا لك. - Yufenyuy Veyeh Dider
لا تحتاج إلى القيام بسحر grep-awk لأن كل حزم تعتمد على php5-common، بكل بساطة: apt-get purge php5-common سوف تطهير جميع حزم php5 من النظام الخاص بك. - oerdnj