উবুন্টুতে একসাথে একাধিক পিএইচপি সংস্করণ


16

আমি আমার ডেভলপমেন্ট বক্সে উবুন্টু 12.04 চলছে এমন একাধিক পিএইচপি সংস্করণ চালাতে সক্ষম হতে চাই। আমি যা অর্জন করতে চাই তা হ'ল আমি যখন লোকালহোস্টকে ডোমেন হিসাবে ব্যবহার করি তখন একটি ডিফল্ট ব্যবহার করা হয় (আসুন পিএইচপি 5.3.17 বলি)। আমি যখন 547.localhost ব্যবহার করি তখন ডোমেন হিসাবে পিএইচপি 5.4.7 ব্যবহৃত হয়। এই কাজটি ফাস্টসিজি ব্যবহার করে করার জন্য আমি কিছু টিউটোরিয়াল দেখেছি তবে এখন পর্যন্ত আমি এটি কাজ করতে সক্ষম হতে পারিনি। আমি এই টিউটোরিয়ালগুলি দেখেছি:

  1. http://dbforch.wordpress.com/2010/05/21/apache2-fastcgi-multiple-php-versions-ubuntulucid-10-04/
  2. http://www.metod.si/multiple-php-versions-with-apache-2-fastcgi-phpfarm-on-ubuntu/

যতদূর আমি দেখতে পাচ্ছি প্রয়োজনীয় যা প্রয়োজন তা আমি করেছি। সমস্যা হ'ল পিএইচপি সহজভাবে চালায় না। আমি যখন http://localhost/somephpfile.phpএটিতে যাই তখন কেবল পিএইচপি ফাইলের উত্স আউটপুট করে। একই জন্য http://547.localhost/somephpfile.php

আমি যে পদক্ষেপ নিয়েছি তা ভেঙে দেব এই আশায় যে কেউ আমার কী মিস করেছে তা চিহ্নিত করতে সক্ষম হবে।

  1. প্রথমে আমি একটি ডিফল্ট ল্যাম্প স্ট্যাক ব্যবহার করে ইনস্টল করেছি sudo apt-get install lamp-server^ phpmyadmin। এর পরে আমার পিএইচপি-র সংগ্রহস্থল সংস্করণ চলমান একটি কর্মক্ষম ডেভলপমেন্ট সার্ভার ছিল।
  2. তারপরে আমি পিএইচপিফর্মটি দুটি পিএইচপি ইনস্টল তৈরি করতে ব্যবহার করেছি, একটি 5.3.17 এর জন্য এবং একটি 5.4.7 এর জন্য। পিএইচপিফর্মের লোকেশনটি /etc/php/phpfarmতাই এক্সিকিউটেবলের মধ্যে রয়েছে/etc/php/phpfarm/inst/php-{version}/bin
  3. তারপরে আমি অ্যাপাচি এবং মোড_এফপি নিষ্ক্রিয় করার জন্য স্যাক্সেক্স এবং ফাস্টসিজি সক্ষম করি sudo a2enmod fastcgi actions suexec && sudo a2dismod php5
  4. এরপরে, আমি /etc/apache2/mods-enabled/fastcgi.confপড়ার জন্য সম্পাদনা করেছি :

    <IfModule mod_fastcgi.c>   
        FastCgiIpcDir /var/lib/apache2/fastcgi  
        FastCgiWrapper /usr/lib/apache2/suexec   FastCgiConfig -idle-timeout
        110 -killInterval 120 -pass-header HTTP_AUTHORIZATION -autoUpdate  
        ScriptAlias /php-fcgi/ /var/www/cgi-bin/ 
    </IfModule>
    
  5. তারপরে /var/www/আমি একটি ফোল্ডার সিজি-বিন তৈরি করেছিলাম এবং এই ফোল্ডারে দুটি পিএইচপি সংস্করণের জন্য নিম্নরূপ দুটি ফাইল রেখেছি (আমি 5.3.17 এর জন্য কেবল একটিটি দেখাই /var/www/php5317.fcgi):

    #!/bin/sh
    # you can change the PHP version here.
    version="5.3.17"
    # php.ini file location, */php-5.2.13/lib equals */php-5.2.13/lib/php.ini.
    PHPRC=/etc/php/phpfarm/inst/php-${version}/lib/php.ini
    export PHPRC
    
    PHP_FCGI_CHILDREN=3
    export PHP_FCGI_CHILDREN
    
    PHP_FCGI_MAX_REQUESTS=5000
    export PHP_FCGI_MAX_REQUESTS
    
    # which php-cgi binary to execute
    exec /etc/php/phpfarm/inst/php-${version}/bin/php-cgi
    
  6. শেষ পদক্ষেপটি ছিল ভার্চুয়াল হোস্টগুলি তৈরি করা। শেষের দিকে আমার কাছে তিনটি ফাইল রয়েছে /etc/apache2/sites-enabled: 000- ডিফল্ট, php5.3.17 এবং php5.4.7 নিম্নলিখিত সামগ্রীগুলির সাথে:

    ডিফল্ট:

    <VirtualHost *:80>
      ServerName localhost
      DocumentRoot /var/www
      <Directory "/var/www">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
        AddHandler php-cgi .php
        Action php-cgi /php-fcgi/php5317.fcgi
      </Directory>
    </VirtualHost>
    

    php5.3.17:

    <VirtualHost *:80>
      ServerName 5317.localhost
      DocumentRoot /var/www
      <Directory "/var/www">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
        AddHandler php-cgi .php
        Action php-cgi /php-fcgi/php5317.fcgi
      </Directory>
    </VirtualHost>
    

    php5.4.7:

    <VirtualHost *:80>
      ServerName 547.localhost
      DocumentRoot /var/www
      <Directory "/var/www">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
        AddHandler php-cgi .php
        Action php-cgi /php-fcgi/php547.fcgi
      </Directory>
    </VirtualHost>
    
  7. অবশেষে আমি পড়ার জন্য / ইত্যাদি / হোস্টগুলি পরিবর্তন করেছি

    127.0.0.1   localhost
    127.0.0.1   547.localhost
    127.0.0.1   5317.localhost
    
    # The following lines are desirable for IPv6 capable hosts
    ::1     ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    

এখন আমি জিনিসগুলি কাজ করার আশা করব, তবে দুঃখের সাথে তারা তা দেয় না। পরিবর্তে যে কোনও পিএইচপি ফাইল পিএইচপি এর মধ্য দিয়ে চলে এটি কেবল কাঁচা ফাইলকে আউটপুট করে।

এখানে আমি অবশ্যই কিছু মিস করেছি, তবে আমি প্রক্রিয়াটি বহুবার পেরেছি এবং কোথায় ভুল হয়েছে তা আমি বুঝতে পারি না।


1 টির মুখোমুখি হয়েছি যে আমি আপনার মতো সিজি ফাইলগুলির নাম দিলে এটি কার্যকর হয় না। পুনঃনামকরনের চেষ্টা /var/www/cgi-bin/php-cgi-5.4.7করতে /var/www/cgi-bin/php54.fcgiউদাহরণস্বরূপ বা শুধু /var/www/cgi-bin/php.fcgi। আপনি সাহায্য করতে পারেন কিনা তা পরীক্ষা করতে পারেন? কেবল 5.4.7 সংস্করণের জন্য।

আমি পরীক্ষা করে দেখেছি এবং দুর্ভাগ্যক্রমে এটি কোনও উপকারে আসে না। আমি এই পরিবর্তনটি প্রতিফলিত করার জন্য ভার্চুয়ালহস্টকেও পরিবর্তন করেছি পাশাপাশি অ্যাকশন লাইনটি পড়ুনAction php-cgi /php-fcgi/php547.fcgi

আমি এই পরিবর্তনগুলি

হুম, আমি তখন অন্য সম্ভাবনার জন্য পরীক্ষা করব। :)

আমি ভাবছিলাম, সম্ভবত আমার suexec স্টাফের প্রয়োজন নেই যেহেতু প্রতিটি পিএইচপি সংস্করণে আমার জন্য আলাদা ব্যবহারকারীর প্রয়োজন নেই?

উত্তর:


2

আপনার ভার্চুয়ালহোস্টগুলিতে আপনি একটি হ্যান্ডলার যুক্ত করেছেন, তবে আপনি হ্যান্ডলারটি সেট করেন নি যার কারণে এটি প্রক্রিয়াজাত হয় না। যোগ করুন

<FilesMatch "\.php$">
    SetHandler php-cgi
</FilesMatch>

</Directory>প্রতিটি ভার্চুয়াল হোস্ট ফাইলের আগে ।


0

আমি এই ডুবেবল ইউ -র দ্বারা সংক্ষেপে ধাপে ধাপে পর্যালোচনা পছন্দ করেছি এবং এটি নিজে চেষ্টা করে দেখতে চাই। যা ছিল তা ছিল না

  • sudo chmod +x /var/www/cgi-bin/*
    • যেহেতু এটি কার্যকর করা হয়নি, তাই অ্যাপাচি সিজি স্ক্রিপ্টগুলি কার্যকর করতে সক্ষম হয় নি
    • এই পথের প্রয়োজন হয় Action php-cgi /php-fcgi/php<version>.fcgi মধ্যে vhost.confফাইল
  • sudo apt-get install apache2-suexec-pristine libapache2-mod-fastcgi
    • সুেক্সেক এক্সিকিউটেবল এবং ফাস্টসিগি মডিউলটি অনুপস্থিত ছিল, সেগুলি প্রথমে ইনস্টল করতে হয়েছিল
    • Suexec এক্সিকিউটেবল লাইন কার্যকলাপের জন্য দরকারি FastCgiWrapper /usr/lib/apache2/suexecমধ্যে fastcgi.confফাইল
  • আমাকেও লাইনটি সরিয়ে ফেলতে হয়েছিল FastCgiIpcDir /var/lib/apache2/fastcgi
    • অন্যথায় আমি ত্রুটি বার্তা পেয়েছি FastCgiIpcDir /var/lib/apache2/fastcgi: already defined as "/var/lib/apache2/fastcgi"

যে কেউ htaccess বা vhosts ফাইলের মাধ্যমে php_admin_value এবং php_value সেট করার চেষ্টা করছেন তাদের জন্য: এফসিজিআই দিয়ে এটি সম্ভব নয়। পরিবর্তে আপনি ডিরেক্টরি নির্দিষ্ট php.ini কনফিগারেশন সেট করতে .user.ini ফাইল ব্যবহার করতে পারেন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.