كيفية تغيير إصدار PHP (MultiPHP في cPanel وVPS بنظام Ubuntu)
لتغيير إصدار PHP على الاستضافة المشتركة بلوحة cPanel، افتح cPanel → Software → MultiPHP Manager، وحدّد النطاق، واختر الإصدار الجديد، ثم اضغط Apply. إذا ظهر لك في حسابك Select PHP Version بدلًا من ذلك، فاستخدم CloudLinux PHP Selector. أما على VPS بنظام Ubuntu، فثبّت حزمة PHP-FPM الخاصة بالإصدار الجديد (من مستودع ondrej/php PPA إذا لم يكن Ubuntu يوفّره)، ووجّه Nginx أو Apache إلى مقبس FPM الخاص بهذا الإصدار، ثم أعد تشغيل الخدمات. يشرح هذا الدليل الإعدادين معًا، بالإضافة إلى رفع حدود PHP والتأكد من الإصدار المُفعّل.
المتطلبات الأساسية
- للاستضافة المشتركة: بيانات دخول cPanel لحساب استضافة مشتركة من Cloudesta.
- لـ VPS: صلاحية دخول عبر SSH بحساب root أو بصلاحيات sudo إلى سيرفر يعمل بنظام Ubuntu 24.04 أو 22.04 ومُثبّت عليه Nginx أو Apache.
- نسخة احتياطية حديثة من ملفات موقعك وقاعدة البيانات. تتوفر أداة JetBackup في cPanel. أما على VPS، فاستخدم نسخك الاحتياطية الخاصة.
- معرفة إصدارات PHP التي يدعمها تطبيقك. راجع توثيق WordPress أو Laravel أو الإضافة المستخدمة.
1. كيف أغيّر إصدار PHP في cPanel؟
تتيح لك أداة MultiPHP Manager تعيين إصدار PHP مختلف لكل نطاق:
- سجّل الدخول إلى cPanel وانتقل إلى Software → MultiPHP Manager.
- حدّد مربع الاختيار بجوار النطاق أو النطاق الفرعي الذي تريد تغييره.
- اختر الإصدار، مثل
PHP 8.3 (ea-php83)، من القائمة المنسدلة PHP Version أعلى اليمين. - اضغط Apply. يسري التغيير خلال ثوانٍ قليلة.
النطاق المُعلَّم بـ inherit يستخدم الإصدار الافتراضي للسيرفر. ويحتفظ كل نطاق بإعداده الخاص، لذا يمكنك تجربة إصدار جديد على نطاق فرعي تجريبي (staging) قبل تغيير إصدار الموقع الرئيسي.
ماذا لو ظهر لي "Select PHP Version" بدلًا من ذلك؟
على السيرفرات التي تعمل بنظام CloudLinux، قد تعرض cPanel الخيار Software → Select PHP Version (أداة CloudLinux PHP Selector). لاستخدامها:
- اختر إصدارًا من القائمة المنسدلة في الأعلى واضغط Set as current.
- افتح تبويب Extensions وحدّد الوحدات التي يحتاجها تطبيقك، مثل
mysqliوpdo_mysqlوintlوimagickوzip. - استخدم تبويب Options لتغيير قيم مثل
memory_limitوupload_max_filesize.
inherit). إذا كان النطاق مثبّتًا هناك على إصدار ea-php محدد، فلن تؤثر عليه تغييرات Selector. استخدم أداة واحدة لكل نطاق، وليس الأداتين معًا.2. كيف أرفع قيمة memory_limit أو upload_max_filesize في cPanel؟
- انتقل إلى Software → MultiPHP INI Editor.
- في تبويب Basic Mode، اختر النطاق أسفل Configure PHP INI basic settings.
- اضبط القيم التي تحتاجها، ثم اضغط Apply. القيم المعتادة هي:
memory_limitبقيمة 256M، وupload_max_filesizeبقيمة 64M، وpost_max_sizeبقيمة 64M (مساوية لحجم الرفع أو أكبر منه)، وmax_execution_timeبقيمة 120.
يتيح لك تبويب Editor Mode تعديل ملف php.ini الخاص بالنطاق مباشرةً. ومع ذلك تظل القيم محدودة بحدود موارد باقتك. إذا احتاج الموقع إلى المزيد، فافتح تذكرة لمناقشة الترقية إلى باقة أعلى.
3. كيف أعرف إصدار PHP الذي يستخدمه موقعي؟
من خلال File Manager، أنشئ ملفًا باسم info.php في المجلد الجذري للنطاق (عادةً public_html) يحتوي على ما يلي:
<?php phpinfo();
افتح https://example.com/info.php. يعرض رأس الصفحة إصدار PHP، ويعرض الجدول ملف php.ini المُحمَّل والحدود والإضافات المُفعّلة. احذف الملف فور انتهائك، لأنه يكشف تفاصيل السيرفر.
4. كيف أثبّت إصدار PHP آخر على VPS بنظام Ubuntu؟
يأتي Ubuntu 24.04 مع PHP 8.3، ويأتي Ubuntu 22.04 مع PHP 8.1. وللحصول على إصدارات أخرى، أضف مستودع PPA الخاص بـ Ondřej Surý، وهو المصدر الخارجي الأكثر استخدامًا لتثبيت إصدارات PHP متعددة على Ubuntu.
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:ondrej/php
sudo apt update
ثبّت FPM والإضافات الشائعة للإصدار الذي تريده. يستخدم المثال الإصدار 8.3؛ استبدله بـ 8.2 أو 8.4 وهكذا حسب الحاجة:
sudo apt install -y php8.3-fpm php8.3-cli php8.3-mysql php8.3-curl \
php8.3-mbstring php8.3-xml php8.3-zip php8.3-gd php8.3-intl php8.3-bcmath
php8.3-fpm بدلًا من الحزمة المجردة php8.3، لأن الحزمة المجردة قد تجلب معها libapache2-mod-php8.3 وApache، حتى على سيرفر يعمل بـ Nginx.يعمل كل إصدار كخدمة مستقلة لها مقبس (socket) وإعدادات خاصة بها، لذا تظل الإصدارات الأقدم مثبّتة جنبًا إلى جنب مع الإصدار الجديد:
ls /run/php/
sudo systemctl enable --now php8.3-fpm
لا تُنسخ الإعدادات بين الإصدارات. لتغيير حدود PHP الخاصة بالويب، عدّل الملف /etc/php/8.3/fpm/php.ini. أما PHP في سطر الأوامر فيقرأ الملف /etc/php/8.3/cli/php.ini بدلًا منه.
5. كيف أغيّر الإصدار الافتراضي لـ PHP CLI؟
sudo update-alternatives --config php
# or set it directly:
sudo update-alternatives --set php /usr/bin/php8.3
php -v
يؤثر هذا على Composer ومهام cron وأوامر Artisan التي تستدعي php، لكنه لا يغيّر إصدار PHP الذي يستخدمه سيرفر الويب.
6. كيف أوجّه Nginx أو Apache إلى مقبس PHP-FPM الجديد؟
Nginx
افتح ملف إعدادات موقعك، مثل /etc/nginx/sites-available/example.com، وحدّث قيمة fastcgi_pass:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
sudo nginx -t && sudo systemctl reload nginx
Apache
لتغيير الإصدار على مستوى السيرفر بالكامل، فعّل وحدات FPM proxy، وفعّل إعدادات الإصدار الجديد، وعطّل إعدادات الإصدار القديم. استبدل 8.1 بالإصدار الذي كنت تستخدمه من قبل:
sudo a2enmod proxy_fcgi setenvif
sudo a2disconf php8.1-fpm
sudo a2enconf php8.3-fpm
# only if mod_php was in use:
sudo a2dismod php8.1
sudo apachectl configtest && sudo systemctl restart apache2
أما لتعيين إصدار PHP لكل موقع على حدة، فأضف ما يلي داخل كتلة <VirtualHost> الخاصة بالموقع:
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost"
</FilesMatch>
بعد أي تعديل على php.ini، أعد تشغيل FPM بالأمر sudo systemctl restart php8.3-fpm. وبعد التأكد من أن كل شيء يعمل، يمكنك إيقاف الإصدار القديم بالأمر sudo systemctl disable --now php8.1-fpm.
التحقق من نجاح التغيير
- افتح ملف
info.phpمؤقتًا وتأكد من الإصدار. على VPS، يجب أن تكون قيمة Server API هيFPM/FastCGI. احذف الملف بعد ذلك. - نفّذ الأمرين
php -vوphp -mعلى VPS للتحقق من إصدار CLI والوحدات المُثبّتة. - نفّذ الأمر
systemctl status php8.3-fpmوتأكد من ظهورactive (running). - تصفّح موقعك، وسجّل الدخول إلى لوحة الإدارة، وجرّب النماذج ورفع الملفات.
المشكلات الشائعة
يعرض الموقع أخطاء أو صفحة فارغة بعد التغيير. يستخدم الكود أو الإضافات دوالّ أُزيلت في الإصدار الجديد. ارجع إلى الإصدار السابق ليعود الموقع للعمل، ثم اقرأ ملف error_log في مجلد الموقع (أو /var/log/nginx/error.log أو /var/log/apache2/error.log)، وحدّث نظام إدارة المحتوى والقالب والإضافات، ثم غيّر الإصدار مرة أخرى.
ظهور الخطأ "Call to undefined function mysqli_connect()" أو خطأ مشابه يشير إلى إضافة ناقصة. لكل إصدار إضافاته الخاصة. على CloudLinux، حدّد الإضافة من Select PHP Version → Extensions. أما على VPS، فثبّتها للإصدار نفسه تحديدًا (مثلًا sudo apt install php8.3-mysql) ثم أعد تشغيل php8.3-fpm.
لا يتغير الإصدار في cPanel، أو يتم تنزيل ملفات PHP بدلًا من تشغيلها. هناك معالج (handler) قديم في ملف .htaccess يتجاوز إعدادات MultiPHP. ابحث عن AddHandler application/x-httpd-ea-php74 أو عن كتلة مُعلَّمة بـ php -- BEGIN cPanel-generated handler. احذفها (بعد الاحتفاظ بنسخة منها أولًا)، ثم أعد تطبيق الإصدار من MultiPHP Manager.
يعرض Nginx الخطأ 502 Bad Gateway. المقبس المحدد في fastcgi_pass غير موجود أو أن FPM لا يعمل. قارن المسار بناتج الأمر ls /run/php/ وشغّل الخدمة بالأمر sudo systemctl start php8.3-fpm.
ما زال رفع الملفات يفشل بعد زيادة upload_max_filesize. تأكد من أن قيمة post_max_size لا تقل عنها. وعلى Nginx، اضبط أيضًا client_max_body_size 64M; ثم أعد تحميل Nginx.
الأسئلة الشائعة
هل يمكن أن تستخدم المواقع المختلفة إصدارات PHP مختلفة؟
نعم. في cPanel، تتيح أداة MultiPHP Manager تعيين الإصدار لكل نطاق على حدة. وعلى VPS سحابي، خصّص لإعدادات Nginx أو Apache الخاصة بكل موقع مقبس FPM مستقلًا.
كيف أشغّل مهام cron بإصدار PHP محدد على cPanel؟
استخدم المسار الكامل للملف التنفيذي في أمر cron، مثل /opt/cpanel/ea-php83/root/usr/bin/php. وفي الإعدادات التي تعمل بـ CloudLinux PHP Selector، استخدم /opt/alt/php83/usr/bin/php.
هل يؤدي تغيير إصدار PHP إلى حذف ملفاتي أو قاعدة البيانات؟
لا. يتغير مُفسّر PHP فقط، ويمكنك الرجوع إلى الإصدار السابق في أي وقت. ومع ذلك يُنصح بأخذ نسخة احتياطية أولًا.
تحتاج إلى مساعدة؟ إذا استمر تعطل موقعك بعد تغيير الإصدار، أو كنت تحتاج إلى حدود أعلى مما تسمح به باقتك، افتح تذكرة دعم مع ذكر اسم النطاق ونص رسالة الخطأ كما هو.