記錄安裝 Laravel 專案遇到多版本 PHP 的坑

海峽發表於2020-07-01

介紹

由於伺服器上執行著一些老專案php版本使用的是 5.4 的,而我的新專案用的php7.0 以上的。由於不敢隨意更新php版本,只能安裝一個php7.4 的版本

php7.4.0 安裝

系統:centos7

下載並解壓
$ wget http://php.net/distributions/php-7.4.0.tar.gz
$ tar -zxvf php-7.4.0.tar.gz
$ cd php-7.4.0
編譯並安裝

編譯前,新增使用者組,使用者,用於編譯使用

$ groupadd www
$ useradd -g www www

開始編譯(根據自己需要增減)

$ ./configure \ 
--prefix=/usr/local/php7.4.0 \ 
--with-config-file-path=/etc \ 
--with-fpm-user=www \ 
--with-fpm-group=www \  
--with-curl \ 
--with-freetype-dir \ 
--enable-gd \ 
--with-gettext \  
--with-iconv-dir \ 
--with-kerberos \ 
--with-libdir=lib64 \ 
--with-libxml-dir \ 
--with-mysqli \ 
--with-openssl \ 
--with-pcre-regex \ 
--with-pdo-mysql \ 
--with-pdo-sqlite \ 
--with-pear \ 
--with-png-dir \ 
--with-jpeg-dir \ 
--with-xmlrpc \ 
--with-xsl \ 
--with-zlib \ 
--with-bz2 \ 
--with-mhash \ 
--enable-fpm \ 
--enable-bcmath \ 
--enable-libxml \ 
--enable-inline-optimization \ 
--enable-mbregex \ 
--enable-mbstring \ 
--enable-opcache \ 
--enable-pcntl \ 
--enable-shmop \ 
--enable-soap \ 
--enable-sockets \ 
--enable-sysvsem \ 
--enable-sysvshm \ 
--enable-xml \  
--enable-zip \ 
--enable-fpm

這裡需要注意的是在php7.4 編譯引數 –with-gd 要改成了 –enable-gd

安裝

$ make && make install

設定配置檔案

$ cp -R ./sapi/fpm/php-fpm.conf /usr/local/php7.4.0/etc/php-fpm.conf
$ cp php.ini-development /usr/local/php7.4.0/lib/php.ini
$ cp -R ./sapi/fpm/php-fpm /etc/init.d/php-fpm7.4.0

安裝完成!

修改監聽埠

修改php-fpm.conf的偵聽埠為9074,因為主版本5.4是偵聽9000。

; Note: This value is mandatory.
listen = 127.0.0.1:9074

啟動php-fpm

$ /etc/init.d/php-fpm7.4.0 -c /usr/local/php7.4.0/lib/php.ini -y /usr/local/php7.4.0/etc/php-fpm.conf

透過 netstat -anp | grep 9074 可以看到 php7.4 已啟動

記錄安裝 Laravel 專案遇到多版本 PHP 的坑

配置專案

git伺服器下載專案後。
這時需要 composer install。出錯了,composer 預設使用 系統預設的php5.4版本

記錄安裝 laravel 專案遇到多版本php 的坑
解決方式

$ which php
/usr/bin/php

php7.4.0 複製一份到環境目錄裡

$ cp /usr/local/php7.4.0/bin/php /usr/bin/php74
$ php74 -v
PHP 7.4.0 (cli) (built: Jun 30 2020 10:49:08) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

進入專案目錄並下載 composer.phar

$ cd /var/www/tempweb
$  wget https://getcomposer.org/download/1.6.5/composer.phar

執行php74安裝命令

$ php74 composer.phar install

出錯了,說是沒有fileinfo檔案
laravel 多版本php

解決方法
刪除掉原來的 composer.lock 檔案並重新執行命令php74 composer.phar install即可成功!

配置nginx web 站點

server {
            listen       9090;
           # server_name  不設定 server_name 預設 透過ip訪問
            root         /var/www/TempWeb/public;
            client_max_body_size 20m;
            # Load configuration files for the default server block.
            #include /etc/nginx/default.d/*.conf;

            location / {
                 index index.php;
                 try_files $uri $uri/ /index.php?$query_string;
            }

            location ~ \.php$ {
            # 指定 php7.4 的 9074 埠
               fastcgi_pass   127.0.0.1:9074;
               fastcgi_index  index.php;
               fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
               include        fastcgi_params;
           }
            error_page 404 /404.html;
                location = /40x.html {
            }

            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
                root html;
            }
    }

儲存後過載配置檔案

$ ./usr/sbin/nginx -s reload

搞定!

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章