Skip to content

Instantly share code, notes, and snippets.

@Tosyn
Last active October 28, 2021 10:43
Show Gist options
  • Save Tosyn/fef6437dd3906ff200e471e478eaae95 to your computer and use it in GitHub Desktop.
Save Tosyn/fef6437dd3906ff200e471e478eaae95 to your computer and use it in GitHub Desktop.
PhalconPhp with PHP7 Installation on Ubuntu 16.04
#!/bin/bash
# PhalconPhp with PHP7 installation on ubuntu:16.04
sudo apt-get update
sudo apt-get install -y php7.0-fpm \
php7.0-cli \
php7.0-curl \
php7.0-gd \
php7.0-intl \
php7.0-pgsql \
php7.0-mbstring \
php7.0-xml \
php-msgpack \
curl \
vim \
wget \
git
# For zephir installtion; the following packages are needed in Ubuntu:
sudo apt-get install -y gcc make re2c libpcre3-dev php7.0-dev build-essential php7.0-zip
# Install composer
sudo curl -sS http://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
# Install zephir
sudo composer global require "phalcon/zephir:dev-master"
# Install phalcon dev tool
sudo composer require "phalcon/devtools" -d /usr/local/bin/
sudo ln -s /usr/local/bin/vendor/phalcon/devtools/phalcon.php /usr/bin/phalcon
# Install phalconphp with php7
sudo git clone https://github.com/phalcon/cphalcon.git -b 2.1.x --single-branch
cd cphalcon/
sudo ~/.composer/vendor/bin/zephir build --backend=ZendEngine3
sudo echo "extension=phalcon.so" >> /etc/php/7.0/fpm/conf.d/20-phalcon.ini
sudo echo "extension=phalcon.so" >> /etc/php/7.0/cli/conf.d/20-phalcon.ini
# some additional php settings if you care
sudo sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g" /etc/php/7.0/cli/php.ini
sudo sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g" /etc/php/7.0/fpm/php.ini
sudo sed -i "s/memory_limit = 128M/memory_limit = 256M /g" /etc/php/7.0/fpm/php.ini
# restart php-fpm
sudo service php7.0-fpm restart
@Tosyn
Copy link
Author

Tosyn commented May 16, 2016

@amirshakya2010: That looks like permission error. Confirm sudo is installed and that you have permission to move composer.phar to /usr/local/bin/composer (referring to # Install composer section of the script.)

@phpclub
Copy link

phpclub commented Jun 29, 2016

Warning: Function "mb_detect_encoding" does not exist at compile time in /root/cphalcon/phalcon/escaper.zep on 122 [nonexistent-function]

       if mb_detect_encoding(str, charset, true) {

Maybe add
sudo apt-get install -y php7.0-mbstring

@phpclub
Copy link

phpclub commented Jun 29, 2016

Also
apt install php-msgpack

@Tosyn
Copy link
Author

Tosyn commented Jun 30, 2016

@phpclub: thanks for the comment, I have updated the script accordingly.

@vkill
Copy link

vkill commented Jul 6, 2016

Hi @Tosyn

like zephir-lang/zephir#1270

Should also install xml extension

$ sudo apt-get install -y php7.0-xml

@Tosyn
Copy link
Author

Tosyn commented Jul 6, 2016

Hi @vkill: thanks for the heads up, I have updated the script accordingly.

@vkill
Copy link

vkill commented Jul 7, 2016

@Tosyn

Install phalcon/devtools should after installing phalconphp .
and I make a ansible role .

@Tosyn
Copy link
Author

Tosyn commented Jul 7, 2016

@vkill: The script already include phalcon/devtools setup. And nice job at the ansible role....i like.

@donnes
Copy link

donnes commented Jul 7, 2016

Showed this error

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/phalcon.so' - /usr/lib/php/20151012/phalcon.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/phalcon.so' - /usr/lib/php/20151012/phalcon.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/phalcon.so' - /usr/lib/php/20151012/phalcon.so: cannot open shared object file: No such file or directory in Unknown on line 0

@MaxGaussDev
Copy link

@donnes try this:
sudo chmod o+x /usr/lib/php/20151012/phalcon.so

I also had to set permissions for
/etc/php/7.0/fpm/conf.d/
/etc/php/7.0/cli/conf.d/

@Tosyn
Copy link
Author

Tosyn commented Jul 7, 2016

@MaxGaussDev thanks for helping out.

@donnes
Copy link

donnes commented Jul 8, 2016

@MaxGaussDev This file don't exist on /usr/lib/php/20151012/ I need set permission to this folder?

And for
/etc/php/7.0/fpm/conf.d/
/etc/php/7.0/cli/conf.d/

I set same permission sudo chmod o+x ?

Thanks for helping

@Tosyn
Copy link
Author

Tosyn commented Jul 8, 2016

@donnes if the script ran successfully on your ubuntu 16.04 you should have the file ( /usr/lib/php/20151012/phalcon.so ) with permission already set to executable and you should not have to set any permission for this directory -> /etc/php/7.0/fpm/conf.d/ or any file in it.

Kindly confirm the script ran and completed successfully without error.

If the setup ran successfully please provide more details about what you are trying to do leading to PHP Warning: PHP Startup: ... error been generated.

@donnes
Copy link

donnes commented Jul 8, 2016

@Tosyn Thanks, now all is working fine :D

@Tosyn
Copy link
Author

Tosyn commented Jul 15, 2016

@donnes awesome and you are welcome :)

@uchm4n
Copy link

uchm4n commented Jul 21, 2016

i got this error can someone help ?
Failed to start LSB: Apache2 web server

@Tosyn
Copy link
Author

Tosyn commented Jul 26, 2016

@ucha19871 sorry about the late response. Reinstalling seems to fix same issue for most. Please try that and let's know if that fix it for you as well.

sudo apt-get --purge remove apache2*
sudo apt-get install apache2
sudo service apache2 restart

@besingamkb
Copy link

this doesnt work on me. i got too many error.. please see below

  1. on running composer
Do not run Composer as root/super user! See https://getcomposer.org/root for details
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Generating autoload files
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Using version ^3.0 for phalcon/devtools
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for phalcon/devtools ^3.0 -> satisfiable by phalcon/devtools[v3.0.0].
    - phalcon/devtools v3.0.0 requires ext-phalcon ^3.0 -> the requested PHP extension phalcon is missing from your system.

  To enable extensions, verify that they are enabled in those .ini files:
    - /etc/php/7.0/cli/php.ini
    - /etc/php/7.0/cli/conf.d/10-mysqlnd.ini
    - /etc/php/7.0/cli/conf.d/10-opcache.ini
    - /etc/php/7.0/cli/conf.d/10-pdo.ini
  1. after the build
Warning: Variable "_SESSION" assigned but not used in Phalcon\Session\Adapter::remove in /home/mark/fef6437dd3906ff200e471e478eaae95/cphalcon/phalcon/session/adapter.zep on 204 [unused-variable]

     }
    -^


Warning: Variable "beforeLine" assigned but not used in Phalcon\Debug::showTraceItem in /home/mark/fef6437dd3906ff200e471e478eaae95/cphalcon/phalcon/debug.zep on 339 [unused-variable]

       beforeLine, firstLine, afterLine, lastLine, i, linePosition, currentLine;
    -------------^


Warning: Function "\\sodium\\randombytes_buf" does not exist at compile time in /home/mark/fef6437dd3906ff200e471e478eaae95/cphalcon/phalcon/security/random.zep on 124 [nonexistent-function]

       return \\Sodium\\randombytes_buf(len);
    ----------------------------------------^


Warning: Function "\\sodium\\randombytes_uniform" does not exist at compile time in /home/mark/fef6437dd3906ff200e471e478eaae95/cphalcon/phalcon/security/random.zep on 320 [nonexistent-function]

       return \\Sodium\\randombytes_uniform(len) + 1;
    ---------------------------------------------^


Warning: Variable "singleField" declared but not used in Phalcon\Validation::rules in /home/mark/fef6437dd3906ff200e471e478eaae95/cphalcon/phalcon/validation.zep on 246 [unused-variable]

      var validator, singleField;
    ----------------------------^


@ndaidong
Copy link

ndaidong commented Aug 24, 2016

@besingamk 👍 I got the same issue while running this script within a ubuntu 16.04 based docker container.

Composer successfully installed to: /home/composer.phar
Use it: php composer.phar
Changed current directory to /root/.composer
Do not run Composer as root/super user! See https://getcomposer.org/root for details
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing phalcon/zephir (dev-master 7e304ba)
    Cloning 7e304ba18c7e09b59ad62a3937c3de4d18427866
    Failed to download phalcon/zephir from source: Failed to clone https://github.com/phalcon/zephir.git via https, ssh protocols, aborting.

- https://github.com/phalcon/zephir.git
  Cloning into '/root/.composer/vendor/phalcon/zephir'...
  fatal: unable to access 'https://github.com/phalcon/zephir.git/': Problem with the SSL CA cert (path? access rights?)

- git@github.com:phalcon/zephir.git
  Cloning into '/root/.composer/vendor/phalcon/zephir'...
  error: cannot run ssh: No such file or directory
  fatal: unable to fork

    Now trying to download from dist
  - Installing phalcon/zephir (dev-master 7e304ba)
    Downloading: 100%         

Writing lock file
Generating autoload files
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Using version ^3.0 for phalcon/devtools
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for phalcon/devtools ^3.0 -> satisfiable by phalcon/devtools[v3.0.0].
    - phalcon/devtools v3.0.0 requires ext-phalcon ^3.0 -> the requested PHP extension phalcon is missing from your system.

  To enable extensions, verify that they are enabled in those .ini files:
    - /etc/php/7.0/cli/php.ini
    - /etc/php/7.0/cli/conf.d/10-opcache.ini
    - /etc/php/7.0/cli/conf.d/10-pdo.ini
    - /etc/php/7.0/cli/conf.d/15-xml.ini
    - /etc/php/7.0/cli/conf.d/20-calendar.ini
    - /etc/php/7.0/cli/conf.d/20-ctype.ini
    - /etc/php/7.0/cli/conf.d/20-curl.ini
    - /etc/php/7.0/cli/conf.d/20-dom.ini
    - /etc/php/7.0/cli/conf.d/20-exif.ini
    - /etc/php/7.0/cli/conf.d/20-fileinfo.ini
    - /etc/php/7.0/cli/conf.d/20-ftp.ini
    - /etc/php/7.0/cli/conf.d/20-gd.ini
    - /etc/php/7.0/cli/conf.d/20-gettext.ini
    - /etc/php/7.0/cli/conf.d/20-iconv.ini
    - /etc/php/7.0/cli/conf.d/20-intl.ini
    - /etc/php/7.0/cli/conf.d/20-json.ini
    - /etc/php/7.0/cli/conf.d/20-mbstring.ini
    - /etc/php/7.0/cli/conf.d/20-msgpack.ini
    - /etc/php/7.0/cli/conf.d/20-pdo_pgsql.ini
    - /etc/php/7.0/cli/conf.d/20-pgsql.ini
    - /etc/php/7.0/cli/conf.d/20-phar.ini
    - /etc/php/7.0/cli/conf.d/20-posix.ini
    - /etc/php/7.0/cli/conf.d/20-readline.ini
    - /etc/php/7.0/cli/conf.d/20-shmop.ini
    - /etc/php/7.0/cli/conf.d/20-simplexml.ini
    - /etc/php/7.0/cli/conf.d/20-sockets.ini
    - /etc/php/7.0/cli/conf.d/20-sysvmsg.ini
    - /etc/php/7.0/cli/conf.d/20-sysvsem.ini
    - /etc/php/7.0/cli/conf.d/20-sysvshm.ini
    - /etc/php/7.0/cli/conf.d/20-tokenizer.ini
    - /etc/php/7.0/cli/conf.d/20-wddx.ini
    - /etc/php/7.0/cli/conf.d/20-xmlreader.ini
    - /etc/php/7.0/cli/conf.d/20-xmlwriter.ini
    - /etc/php/7.0/cli/conf.d/20-xsl.ini
    - /etc/php/7.0/cli/conf.d/20-zip.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

Installation failed, deleting ./composer.json.

@CreaoticX
Copy link

CreaoticX commented Sep 5, 2016

@Tosyn I think what @vkill was saying is that the # Install phalcon dev tool section should be at the end because it requires ext-phalcon which I'm guessing is phalcon? If you don't already have a version of phalcon installed than the dev tool install will fail. Incidentally, it doesn't matter because if you install compile this build it will still fail because the version number is different 2.1.0r vs 3.0.1. To fix this @ndaidong and @besingamk you need to add --ignore-platform-reqs to the composer install. i.e."

sudo composer require "phalcon/devtools" -d /usr/local/bin/  --ignore-platform-reqs

Just to be clear. I haven't used composer very much and this is the first Phalcon install I've ever done. So, those worked for me but if someone has a better way let me know.

Also these lines didn't work for me:

sudo echo "extension=phalcon.so" >> /etc/php/7.0/fpm/conf.d/20-phalcon.ini
sudo echo "extension=phalcon.so" >> /etc/php/7.0/cli/conf.d/20-phalcon.ini

I got a permission denied error for some reason. I had to log into root and create the files manually.

Edit: Fixed my code formatting

@CreaoticX
Copy link

Added note. To get this to work in the browser I had to:

sudo cp /etc/php/7.0/cli/conf.d/20-phalcon.ini /etc/php/7.0/apache2/conf.d/20-phalcon.ini
sudo service apache2 restart

@CreaoticX
Copy link

Another update. In order to get devtools to run I had to comment out lines 58 - 63 of phalcon.php to prevent it from doing the version check. Haven't run it yet to see it works, but I had to do that just to get phalcon commands to work.

    throw new Exception(
        sprintf(
            "Your Phalcon version isn't compatible with Developer Tools, download the latest at: %s",
            Script::DOC_DOWNLOAD_URL
        )
    );

@CreaoticX
Copy link

If anyone else stumbles on to this there is now a stable build of phalcon 3.0.x for php 7 and ubuntu 16.04 on the phalconphp website under the downloads section.

@kjngsh0p1459
Copy link

How to run phalcon devtools,i want create project in terminal ???

@tejastank
Copy link

Easy way:

curl -s "https://packagecloud.io/install/repositories/phalcon/stable/script.deb.sh" | sudo bash

sudo apt-get install php5-phalcon

Ubuntu 16.04+, Debian 9+

sudo apt-get install php7.0-phalcon

@DracoPL
Copy link

DracoPL commented Mar 18, 2017

If you are on Linux Mint 18 you can get E: Unable to locate package php7.0-phalcon when trying to install php7.0-phalcon.
You can fix it with: sudo apt-add-repository ppa:ondrej/php && sudo apt-get update

@SirCiorap
Copy link

@DracoPL thank you so much for your help. Been trying to install phalcon on linux mint serena and failed for about 3 hours... Your solution worked like a charm :D

@ahmadfauzirahman99
Copy link

how install phalcon with xampp in ubuntu 16.04? please help me ..

@naaness
Copy link

naaness commented Nov 9, 2017

It works on ubuntu 16.04.3!!!

@enoatu
Copy link

enoatu commented Mar 13, 2018

It works on Debian 9.3 ! Thank you !!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment