امید احمدیانی
امید احمدیانی
خواندن ۲ دقیقه·۶ سال پیش

استفاده همزمان از چند نسخه php در Centos 7

تغییر نسخه php به صورت اتومات در linux centos
تغییر نسخه php به صورت اتومات در linux centos

بسیار اتفاق می افتد که سیستم یا سرور شما centos 7 باشد و چند نرم افزار تحت وب نوشته شده با php بخواهید روی آن راه اندازی کنید که هر کدام با نسخه خاصی از php سازگار هستند. مثلا بعضی از قالب های وردپرس با نسخه ۷٫۲ از زبان برنامه نویسی php سازگار نیستند و سایت مشتری یا خودتان بالا نمی آید.

برای شروع کار شما باید مخازن و سرویس های مورد نظر را نصب کنید.

نکته: دستورات زیر با این پیش فرض که شما کاربر روت هستید اجرا می شوند و یا قبل از همه ی دستورات زیر sudo را اضافه می کنید.

yum install httpd -y yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm yum install yum-utils -y yum install php56 -y yum install php72 -y yum install php56-php-fpm -y yum install php72-php-fpm -y

بعد از نصب سرویس ها آن ها را متوقف کنید.

systemctl stop php56-php-fpm systemctl stop php72-php-fpm

به صورت پیش فرض لوکال هاست شما به پورت ۹۰۰۰ هزار را گوش فرا می دهد و استفاده می کند که باید تغییر کند.

sed -i 's/:9000/:9056/' /etc/opt/remi/php56/php-fpm.d/www.conf sed -i 's/:9000/:9072/' /etc/opt/remi/php72/php-fpm.d/www.conf

اکنون دو نسخه همزمان از php می تواند روی پورت های متفاوت به صورت همزمان اجرا شوند.

systemctl start php72-php-fpm systemctl start php56-php-fpm

حال یک اسکریپت جهت فراخوانی php56-cgi و php72-cgi می نویسیم.

cat > /var/www/cgi-bin/php56.fcgi << EOF #!/bin/bash exec /bin/php56-cgi EOF cat > /var/www/cgi-bin/php72.fcgi << EOF #!/bin/bash exec /bin/php72-cgi EOF

دادن دسترسی اجرایی به وب سرور آپاچی

sudo chmod 755 /var/www/cgi-bin/php56.fcgi sudo chmod 755 /var/www/cgi-bin/php72.fcgi

ساخت تنظیمات php برای آپاچی . به صورت پیشفرض php نسخه ۵٫۶ اجرا می شود.

cat > /etc/httpd/conf.d/php.conf << EOF ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" AddHandler php56-fcgi .php Action php56-fcgi /cgi-bin/php56.fcgi Action php72-fcgi /cgi-bin/php72.fcgi DirectoryIndex index.php AllowOverride all Require all granted DirectoryIndex index.php AllowOverride all Require all granted EOF

ساخت صفحات تستی جهت تست نسخه های php با استفاده از فایل .htaccess:

mkdir -p /var/www/html/php56 mkdir -p /var/www/html/php72 echo "" > /var/www/html/php56/index.php echo "" > /var/www/html/php72/index.php echo "AddHandler php72-fcgi .php" > /var/www/html/php72/.htaccess

در ادامه توضیحات راجع به فایل .httaccess خواهم نوشت.

اکنون می توانیم تست کنیم. برای مشاهده نسخه تست نسخه php5.6 آدرس زیر را در مرورگر وارد نمایید:

http://127.0.0.1/php56

و برای تست نسخه php7.2 آدرس زیر را در مرورگر وارد نمایید:

http://127.0.0.1/php72

اگر می خواهید هنگام شروع به کار سرور یا سیستم centos سرویس ها گفته شده در بالا به صورت اتومات اجرا شوند کدهای زیر را در centos وارد نمایید.

sudo systemctl enable httpd sudo systemctl enable php56-php-fpm sudo systemctl enable php72-php-fpm

نکته مهم اینکه به صورت اتومات سرور تشخیص نمی دهد که برنامه مورد نظر با کدام نسخه php باید اجرا شود اگه همچین امکانی باشه خوشحال میشم از دوستان بشنوم. برای اینکه تنظیم کنید این برنامه با این نسخه اجرا شود باید در فایل .htaccess دایرکتوری اجرا کننده کد زیر نوشته شود.

اگر می خواهید اسکریپت یا برنامه با php5.6 اجرا شود:

AddHandler php56-fcgi .php

اگر می خواهید اسکریپت یا برنامه با php7.2 اجرا شود:

AddHandler php72-fcgi .php

در صورتی که سوالی دارید و یا نکته ای خواستید اضافه کنید حتما در کامنت ها بزارید.

منبع: وب سایت شخصی امید احمدیانی

برنامه نویسیphpcentosلینوکس
برنامه نویس | کارآفرین | بازاریاب دیجیتال | مدیر سرور
شاید از این پست‌ها خوشتان بیاید