[macOS] PHP双版本,5.6跟7.1
转过来的,原文看这里,https://www.symfony.fi/page/how-to-run-both-php-5-6-and-php-7-x-with-homebrew-on-os-x-with-php-fpm
How to run both PHP 5.6 and PHP 7.x with Homebrew on OS X with PHP-FPM
The latest iterations of PHP in the 7.x branch are great improvement over the last PHP 5 version, which is 5.6. However many applications don't support it and it will be useful to run many versions on a local environment. In my case a laptop running macOS (OS X) and using the Homebrew packet manager. This is how to run both PHP 5.6 and PHP 7.1 simultaneously.
PHP 7.0 was a large release of the popular programming language and platform powering large parts of the web. The new release of PHP brings performance improvements and new features. The PHP community goes to great lengths to make sure that the release is backwards compatible. To a large part this is true, but there are certain incompatibilities which are described in the official Migration Guide.
eZ Publish 5 is a hybrid application with both contemporary PHP as well as older code dating back to 2003. That version was an intermediary step to more to a whole new architecture. Development of new features on eZ Publish was frozen in 2014 when the team focused on the new product known as eZ Platform.
Despite not receiving new features, eZ Publish is still a valid product and will continue to be supported way until 2021. The last major version was released before PHP 7 was launched and will likely never receive (official) support for it. The new Symfony Framework powered eZ Platform is already stable with PHP 7 for development use.
This is the case not only for eZ products, but many developers working with PHP will need to keep many versions of the runtime in action for years to come.
Installing two versions of PHP with Homebrew
Developers working with PHP on OS X (El Capitan) have a number of options for installing PHP. Ranging from enabling the built in PHP to running a dedicated virtual machine for the LAMP environment. One great option is to use the Homebrew packet manager.
Homebrew is a lot like APT or Yum familiar to many Linux users, but for OS X. If you do don't have Homebrew installed yet, then head over to the homepage or the installation guide. As an added benefit to some approaches of running PHP on OS X, you can easily install PHP extensions required to run eZ using brew, such as php-imagick, php-intl, php-xsl and others.
Brew has a number of PHP versions in it's repositories. They are specified in the package names with a number, such as php56 for PHP 5.6 and php70 for PHP 7.0. The "dot releases" in PHP bring new functionalities and can brake backwards compatibility, so in the future there will be packages like php71 for PHP 7.1 in the future.
Once you've got the packet manager up and running it's time to install PHP. Let's start with installing PHP 5.6:
brew install php56
This will take a while to run, but after that you will have the latest PHP 56 installed. Once this is done you can check that you've now got PHP 56 installed by issuing the php --version command:
janit@turska ~ - $ php --version
PHP 5.6.18 (cli) (built: Feb 6 2016 06:53:53)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
However in this case we'll want to make PHP 7.0 the default version, so we'll need to issue a command to remove symlinks to the PHP files:
janit@turska ~ - $ brew unlink php56
Unlinking /usr/local/Cellar/php56/5.6.18... 18 symlinks removed
This now removed filesystem links pointing to php56. Next we'll want to install PHP 7.0:
brew install php70
Once this is done, verify that the default version is now PHP 7:
PHP 7.0.4 (cli) (built: Mar 9 2016 12:26:14) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
To make it easy for us to run PHP 5.6 on the command line by creating a symlink and using it:
ln -s /usr/local/Cellar/php56/5.6.NN/bin/php /usr/local/bin/php56
Once this is done you can use PHP 5.6 from the command line with the command php56.
Setting up multiple PHP versions using PHP-FPM
PHP is most often used to power web applications, so we'll need to link our two PHP versions to versions. PHP-FPM is a modern way of running PHP with a process manager and the FastCGI protocol. This enables high performance as well as easy switching between various versions of PHP.
Using PHP-FPM is possible with the Apache web server as well, but in this case we'll use the Nginx web server. To install Nginx with Homebrew, follow these instructions. They contain all that you need to get Nginx and PHP-FPM running on OS X.
By default PHP-FPM is configured to use ports for communication. An IP Addressand a Port together form a Socket, which allows running multiple backends with a single IP. In case of PHP-FPM the default socket used is marked in the virtual host configurations (located in /usr/local/etc/nginx/servers/) with:
fastcgi_pass 127.0.0.1:9000;
This means that FastCGI requests coming in to Nginx will be passed to a PHP process manager listening at IP 127.0.0.1 and port 9000. The port 9000 is just a default value and we can modify it by changing the configurations. We'll leave PHP 7.0 to listen in the default port, but set 5.6 to listen to port 9056.
Open up the configuration file in a text editor: /usr/local/etc/php/5.6/fpm.d/www.conf
listen = 127.0.0.1:9056
Now we've got two PHP-FPMs configured to listening in different ports (9000 and 9056), but they're not running at the moment. You'll need to both of them to processes that will start when booting up the machine. This is done using the standard Homebrew approach.
Create the directory for Launch agents (it might already exist):
mkdir -p ~/Library/LaunchAgents
Copy startup scripts to the LaunchAgents directory:
cp /usr/local/opt/php70/homebrew.mxcl.php70.plist ~/Library/LaunchAgents/
cp /usr/local/opt/php56/homebrew.mxcl.php56.plist ~/Library/LaunchAgents/
Finally launch both PHP-FPM processes - only required this time, they will start automatically on next boot up:
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php70.plist
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php56.plist
Next you'll want to create two virtual hosts for Nginx and configure them to different ports. In your eZ Platform config, for example you'll only need to switch between the two lines with comments to go from PHP 5.6 to 7.0 and back to 5.6:
# PHP 7.0
fastcgi_pass 127.0.0.1:9000; # PHP 5.6
# fastcgi_pass 127.0.0.1:9056;
That's it, you can now switch back and forth between different PHP versions when using OS X without the overhead of running virtual machines.
[macOS] PHP双版本,5.6跟7.1的更多相关文章
- windows下怎么解决Python双版本问题
相信大家会在windows下会遇到Python双版本问题 当我们装了Python2和Python3时我们好只能在命令栏调出最高版本的那个低版本的难道消失了吗?今天我们就解决这个问题! 1.下载 我们在 ...
- python在windows(双版本)及linux环境下安装
python下载 下载地址:https://www.python.org/downloads/ 可以下载需要的版本,这里选择2.7.12和3.6.2 下面第一个是linux版本,第二个是windows ...
- 【转】Windows下安装python2和python3双版本
[转]Windows下安装python2和python3双版本 现在大家常用的桌面操作系统有:Windows.Mac OS.ubuntu,其中Mac OS 和 ubuntu上都会自带python.这里 ...
- 如何在openWRT系统上实现双版本
最近由于项目需要,需要在AR9331芯片单板(原来是4MBFlash,后来扩充到16MB Flash)上,实现openwrt双版本机制. 双版本的好处,主要是:在升级版本过程中,如果遇到断电等情况,不 ...
- centos下搭建python双版本环境
目录 centos下搭建python双版本环境 一.安装python3 1.理清自带python位置 2.更新用于下载编译python3的相关包 3.安装pip 4.用pip安装wget 5.用wge ...
- python在windows(双版本)及linux(源码编译)环境下安装
python下载 下载地址:https://www.python.org/downloads/ 可以下载需要的版本,这里选择2.7.12和3.6.2 下面第一个是linux版本,第二个是windows ...
- [转帖]如何在VirtualBox中运行macOS Catalina Beta版本
如何在VirtualBox中运行macOS Catalina Beta版本 secist2019-08-03共2179人围观系统安全 https://www.freebuf.com/articles/ ...
- [linux]centos7.4上升级python2版本到python3.6.5 【安装双版本,默认python3】
版本声明 centos7.4 前言:linux上的python默认是版本2的,之前学django项目用的是3的版本 所以得升级下版本~ 1.下载python3.6.5 cd /usr/local/ w ...
- Windows下安装python2和python3双版本
现在大家常用的桌面操作系统有:Windows.Mac OS.ubuntu,其中Mac OS 和 ubuntu上都会自带python.这里我们只介绍下Windows(我用的Win10)环境下的pytho ...
随机推荐
- 加载所有jar包下指定文件
加载所有jar包下指定文件: 如spring中加载 META-INF/spring.handlers 加载 org.springframework.core.io.support.Properties ...
- Android开发怎么让自己的APP UI漂亮、大方(配色篇二)
我们在没有效果图的app开发中有一件事情肯定很头疼:一个按钮的调色改过来改过去,还是很难看,最终只能暂时作罢,浪费了大量的开发时间和精力.开发规范篇见Android开发怎么让自己的APP UI漂亮.大 ...
- Flutter & Dart 安装在window系统
一.系统环境 flutter最低要求 1,windows7 SP1 64位版本以上,我的系统就是windows 7 sp1 64bit 2,git for windows ,没有安装的需要到这里下载 ...
- mysql主从复制-方案2
MySQL主从介绍 (两台机器数据同步) 主:-->binlog 从:-->relaylog 主上有一个log dump线程,用来和从的I/O线程传递binlog 从上有两个线程,其中I/ ...
- page load时执行JavaScript
// Multiple onload function created by: Simon Willison // http://simonwillison.net/2004/May/26/addLo ...
- go语言学习笔记1 Go开发环境
什么是Go?Go是一门并发支持.垃圾回收的编译型系统编程语言,旨在创造一门具有在静态编译语言的高性能和动态语言的高效开发之间拥有良好平衡的一门编程语言. Go的主要特点有哪些?* 类型安全 和 内存安 ...
- PHP 合并有序数组
<?php //两个有序数组合并 $arr1 = [1,5,7,44,66,89]; $arr2 = [4,5,6,88,99,105,111]; $arr3 = []; $l1 = count ...
- Qt编写自定义控件9-导航按钮控件
前言 导航按钮控件,主要用于各种漂亮精美的导航条,我们经常在web中看到导航条都非常精美,都是html+css+js实现的,还自带动画过度效果,Qt提供的qss其实也是无敌的,支持基本上所有的CSS2 ...
- adb 常用命名
adb是Android Debug Bridge的简称, 就是起到调试桥的作用,用来操作android设备 adb help (显示帮助信息) adb devices (获取设备列表及设备状态) ad ...
- php 判断手机号 和 手机号中间四位以**** 代替
代码: //自定义函数手机号隐藏中间四位 function get_phone($str){ $str=$str; $resstr=substr_replace($str,'****',3,4); r ...