I use AWS Cloud9 Amazon Web Services a.k.a. Cloud9 IDE. I’m trying to achieve a setup where I can easily switch the frontend (not CLI) PHP version with PHPBrew between 5.6 and 7 whenever. For now, I’ve only achieved that the bash has the 5.6.31, the frontend phpinfo() says PHP Version 5.5.9-1ubuntu4.17 which is obviously something I don’t want to see. I’ve already managed to do this on another workspace where it says PHP Version 5.6.31, but I’m afraid to touch that workspace to venture into trying to switch to PHP 7. I have no idea how I achieved to make the PHPBrew version the system level PHP…
I’ve read the related topics and questions but they aren’t helping me. This is how I set it up for now:
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
Please note that I have no earthly idea what I’m doing, I never used Linux. I just collected these lines from threads like this and they looked promising, but I must be missing something.
Additional info (requested in comments):
$ cat /etc/apache2/mods-available/php5.load
LoadModule php5_module /usr/lib/apache2/modules/libphp5.6.31.so
$ phpbrew list
* php-5.6.31
I'd ideally switch with phpbrew switch after I have both 5.6.31 and 7 installed. For now, I'd be satisfied if I could just get it to work with 5.6.31
For now, what I did was to switch the "runner" (not sure what that is) from PHP (built-in web server) to Apache httpd (PHP, HTML) here: https://i.snag.gy/Y6eNHy.jpg Then the phpinfo() was actually showing the phpbrew version. Then I also installed PHP 7.2.1 but then everything stopped working. I get lots of errors in the console of c9: https://i.snag.gy/pt5oHN.jpg Beautiful, isn't it? :)
Started apache2
/mnt/shared/bin/run-apache2: line 70: 4813 Segmentation fault apache2
I've completely ditched phpbrew as it's not really for switching Apache's PHP, just CLI (by design). It was never supposed to work, see: this is still a feature request.
Started with a clean Cloud9 PHP/Apache workspace. I followed this article How to Install PHP 5.6, PHP 7.1 on Ubuntu 16.04, 14.04 using PPA and based on that, this is how it turned out:
Then verify:
I ran into an error after installing php7.2:
That I fixed following the advice "Upgrade your libpcre3 library to version from the repository."
Turns out that was "kept back" so I had to do this:
PHP 7.2 started to work! Surprisingly, Cloud9's original PHP is left intact, that lives on under
php5and can be used anytime. So I can now juggle 3 different versions. Yes,phpinfo()shows the version I want every time! Re-running the Cloud9 worker is not even necessary.The
mbstringwill be missing for 5.6 (ran into the problem when runningphpmyadmin):The php.ini files are located at:
Switch from anything to 7.2 PHP
With 1 line:
Switch from anything to 5.6 PHP
With 1 line:
Switch from anything to original PHP from Cloud9
With 1 line:
Now I'm very happy.