我使用AWS Cloud9 Amazon Web Services a.k.a. Cloud9 IDE。我正在尝试实现一个设置,我可以轻松地将前端(而非CLI)PHP版本与PHPBrew在5.6和7之间切换。现在,我只实现了bash有5.6.31,前端phpinfo()
说PHP版本5.5.9-1ubuntu4.17这显然是我不想看的东西。我已经设法在另一个工作区上执行此操作,其中它说PHP版本5.6.31,但是我害怕触摸那个工作区以冒险尝试切换到PHP 7.我不知道我是如何实现PHPBrew的版本系统级PHP ...
我已阅读相关主题和问题,但他们没有帮助我。这就是我现在设置的方式:
curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
chmod +x phpbrew
sudo mv phpbrew /usr/local/bin/phpbrew
phpbrew -v
phpbrew init
echo '[[ -e /home/ubuntu/.phpbrew/bashrc ]] && source /home/ubuntu/.phpbrew/bashrc' >> ~/.bashrc
sudo apt-get update
sudo apt-get install apache2-dev
sudo apt-get install libcurl4-gnutls-dev
sudo apt-get install libmcrypt-dev libreadline-dev
sudo phpbrew install php-5.6.31 +default +dbs +mb +iconv +apxs2=/usr/bin/apxs2
请注意,我不知道自己在做什么,我从未使用过Linux。我只是从这样的线程中收集了这些线条,看起来很有希望,但我必须遗漏一些东西。
其他信息(评论中要求):
$ cat /etc/apache2/mods-available/php5.load
LoadModule php5_module /usr/lib/apache2/modules/libphp5.6.31.so
$ phpbrew list
* php-5.6.31
我安装了5.6.31和7之后,理想情况下会切换到phpbrew switch
。现在,如果我能用它来使用5.6.31
目前,我所做的是将phpinfo()
实际上显示了phpbrew版本。然后我也installed PHP 7.2.1然后一切都停止了。我在c9的控制台中遇到很多错误:https://i.snag.gy/pt5oHN.jpg漂亮,不是吗? :)
Started apache2
/mnt/shared/bin/run-apache2: line 70: 4813 Segmentation fault apache2
答案 0 :(得分:6)
我完全抛弃了 phpbrew ,因为它不是真的用于切换Apache的PHP,只是CLI(按设计)。它从来没有用过,请参阅:this is still a feature request。
从干净的Cloud9 PHP / Apache工作区开始。我遵循了这篇文章How to Install PHP 5.6, PHP 7.1 on Ubuntu 16.04, 14.04 using PPA,基于此,结果如下:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php5.6
sudo apt-get install -y php7.2
然后验证:
php5.6 -v
php7.2 -v
我在安装php7.2之后遇到了error:
$ php7.2 -v
php7.2: symbol lookup error: php7.2: undefined symbol: pcre_jit_exec
我修改了“将您的libpcre3库从存储库升级到版本”的建议。
原来这是“保持”,所以我不得不做this:
apt-get install libpcre3 libpcre3-dev
PHP 7.2开始工作了!令人惊讶的是,Cloud9的原始PHP保持不变,它位于php5
下,可以随时使用。所以我现在可以兼顾3个不同的版本。是的,phpinfo()
每次都显示我想要的版本!甚至不需要重新运行Cloud9工作者。
5.6的mbstring
将会丢失(运行phpmyadmin
时遇到问题):
sudo apt-get install php5.6-mbstring
php.ini文件位于:
sudo find . -name 'php.ini'
./php/7.2/apache2/php.ini
./php/7.2/cli/php.ini
./php/5.6/apache2/php.ini
./php/5.6/cli/php.ini
./php5/fpm/php.ini
./php5/apache2/php.ini
./php5/cli/php.ini
sudo a2dismod php5
sudo a2dismod php5.6
sudo a2enmod php7.2
sudo service apache2 restart
有一行:
sudo a2dismod php5 && sudo a2dismod php5.6 && sudo a2enmod php7.2 && sudo service apache2 restart
sudo a2dismod php5
sudo a2dismod php7.2
sudo a2enmod php5.6
sudo service apache2 restart
有一行:
sudo a2dismod php5 && sudo a2dismod php7.2 && sudo a2enmod php5.6 && sudo service apache2 restart
sudo a2dismod php7.2
sudo a2dismod php5.6
sudo a2enmod php5
sudo service apache2 restart
有一行:
sudo a2dismod php7.2 && sudo a2dismod php5.6 && sudo a2enmod php5 && sudo service apache2 restart
现在我很开心。
答案 1 :(得分:2)
// PHP版本升级(从5.6升级到7.2)
sudo add-apt-repository ppa:ondrej/php -y
sudo apt-get update -y
sudo apt-get install php7.2 php-pear php7.2-curl php7.2-dev php7.2-gd php7.2-mbstring php7.2-zip php7.2-mysql php7.2-xml -y
sudo mv /etc/apache2/envvars /etc/apache2/envvars.bak
sudo apt-get remove libapache2-mod-php5 -y
sudo apt-get install libapache2-mod-php7.2 -y
sudo cp /etc/apache2/envvars.bak /etc/apache2/envvars
sudo a2dismod php5
sudo a2enmod php7.2
sudo service apache2
sudo service apache2 restart
答案 2 :(得分:2)
以下内容将在CLoud9上升级到PHP 7.2:
sudo add-apt-repository ppa:ondrej/php -y
sudo apt-get update -y
sudo apt-get install php7.2 php-pear php7.2-curl php7.2-dev php7.2-gd php7.2-mbstring php7.2-zip php7.2-mysql php7.2-xml
sudo apt-get install libapache2-mod-php7.2 -y
sudo a2dismod php5
sudo a2enmod php7.2
sudo service apache2 restart
答案 3 :(得分:1)
您可以通过以下添加simle行来通过.htaccess文件执行此操作:
切换到PHP 4.4:
# I use python 2
import Tkinter as tk
# For Python 3 use import tkinter as tk
def create_grid(event=None):
w = c.winfo_width() # Get current width of canvas
h = c.winfo_height() # Get current height of canvas
c.delete('grid_line') # Will only remove the grid_line
# Creates all vertical lines at intevals of 100 except for first and last
for i in range(100, w - 100, 100):
c.create_line([(i, 0), (i, h)], tag='grid_line')
# Creates all horizontal lines at intevals of 100 except for first and last
for i in range(100, h - 100, 100):
c.create_line([(0, i), (w, i)], tag='grid_line')
root = tk.Tk()
c = tk.Canvas(root, height=300, width=300, bg='white')
c.pack(fill=tk.NONE, expand=True)
c.bind('<Configure>', create_grid)
root.mainloop()
切换到PHP 5.0:
AddHandler application/x-httpd-php4 .php
切换到PHP 5.1:
AddHandler application/x-httpd-php5 .php
切换到PHP 5.2:
AddHandler application/x-httpd-php51 .php
切换到PHP 5.3:
AddHandler application/x-httpd-php52 .php
切换到PHP 5.4:
AddHandler application/x-httpd-php53 .php
切换到PHP 5.5:
AddHandler application/x-httpd-php54 .php
切换到PHP 5.6:
AddHandler application/x-httpd-php55 .php
切换到PHP 7:
AddHandler application/x-httpd-php56 .php
切换到PHP 7.1:
AddHandler application/x-httpd-php7 .php