بسیار اتفاق می افتد که سیستم یا سرور شما 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 آدرس زیر را در مرورگر وارد نمایید:
و برای تست نسخه php7.2 آدرس زیر را در مرورگر وارد نمایید:
اگر می خواهید هنگام شروع به کار سرور یا سیستم 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
در صورتی که سوالی دارید و یا نکته ای خواستید اضافه کنید حتما در کامنت ها بزارید.