PHP

From Han Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

CLI

Show errors when executing in CLI

$ php -d display_errors myscript.php

PHP 7.2

Installing mcrypt on PHP 7.2 FPM

  • Last tested on Ubuntu 16.04.4 LTS (xenial)
  1. install required packages
    mhan@host:~/dev $ sudo apt-get -y install gcc make autoconf libc-dev pkg-config
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    Note, selecting 'libc6-dev' instead of 'libc-dev'
    autoconf is already the newest version (2.69-9).
    gcc is already the newest version (4:5.3.1-1ubuntu1).
    make is already the newest version (4.1-6).
    pkg-config is already the newest version (0.29.1-0ubuntu1).
    libc6-dev is already the newest version (2.23-0ubuntu10).
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    
    mhan@host:~/dev $ sudo apt-get -y install libmcrypt-dev
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    libmcrypt-dev is already the newest version (2.5.8-3.3).
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    
    mhan@host:~/dev $ sudo apt-get install php7.2-dev
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    The following NEW packages will be installed:
      php7.2-dev
    0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
    Need to get 557 kB of archives.
    After this operation, 5,669 kB of additional disk space will be used.
    Get:1 http://ppa.launchpad.net/ondrej/php/ubuntu xenial/main amd64 php7.2-dev amd64 7.2.4-1+ubuntu16.04.1+deb.sury.org+1 [557 kB]
    Fetched 557 kB in 1s (475 kB/s)
    [master 5187285] saving uncommitted changes in /etc prior to apt run
     4 files changed, 10 insertions(+), 4 deletions(-)
    Selecting previously unselected package php7.2-dev.
    (Reading database ... 176836 files and directories currently installed.)
    Preparing to unpack .../php7.2-dev_7.2.4-1+ubuntu16.04.1+deb.sury.org+1_amd64.deb ...
    Unpacking php7.2-dev (7.2.4-1+ubuntu16.04.1+deb.sury.org+1) ...
    Processing triggers for man-db (2.7.5-1) ...
    Setting up php7.2-dev (7.2.4-1+ubuntu16.04.1+deb.sury.org+1) ...
    update-alternatives: using /usr/bin/php-config7.2 to provide /usr/bin/php-config (php-config) in auto mode
    update-alternatives: using /usr/bin/phpize7.2 to provide /usr/bin/phpize (phpize) in auto mode
    [master b808f2b] committing changes in /etc after apt run
     4 files changed, 4 insertions(+), 4 deletions(-)
    
  2. install mcrypt-1.0.1
    mhan@host:~/dev $ sudo pecl install mcrypt-1.0.1
    WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
    downloading mcrypt-1.0.1.tgz ...
    Starting to download mcrypt-1.0.1.tgz (33,782 bytes)
    .........done: 33,782 bytes
    6 source files, building
    running: phpize
    Configuring for:
    PHP Api Version:         20170718
    Zend Module Api No:      20170718
    Zend Extension Api No:   320170718
    libmcrypt prefix? [autodetect] :
    building in /tmp/pear/temp/pear-build-rootD4MO1w/mcrypt-1.0.1
    running: /tmp/pear/temp/mcrypt/configure --with-php-config=/usr/bin/php-config --with-mcrypt
    checking for grep that handles long lines and -e... /bin/grep
    checking for egrep... /bin/grep -E
    checking for a sed that does not truncate output... /bin/sed
    checking for cc... cc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables...
    checking whether we are cross compiling... no
    ...
    If you ever happen to want to link against installed libraries                                                                                         [3/531]
    in a given directory, LIBDIR, you must either use libtool, and
    specify the full pathname of the library, or use the '-LLIBDIR'
    flag during linking and do at least one of the following:
       - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
         during execution
       - add LIBDIR to the 'LD_RUN_PATH' environment variable
         during linking
       - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
       - have your system administrator add LIBDIR to '/etc/ld.so.conf'
    
    See any operating system documentation about shared libraries for
    more information, such as the ld(1) and ld.so(8) manual pages.
    ----------------------------------------------------------------------
    
    Build complete.
    Don't forget to run 'make test'.
    
    running: make INSTALL_ROOT="/tmp/pear/temp/pear-build-rootD4MO1w/install-mcrypt-1.0.1" install
    Installing shared extensions:     /tmp/pear/temp/pear-build-rootD4MO1w/install-mcrypt-1.0.1/usr/lib/php/20170718/
    running: find "/tmp/pear/temp/pear-build-rootD4MO1w/install-mcrypt-1.0.1" | xargs ls -dils
    26300   4 drwxr-xr-x 3 root root   4096 Apr 24 11:14 /tmp/pear/temp/pear-build-rootD4MO1w/install-mcrypt-1.0.1
    27940   4 drwxr-xr-x 3 root root   4096 Apr 24 11:14 /tmp/pear/temp/pear-build-rootD4MO1w/install-mcrypt-1.0.1/usr
    27945   4 drwxr-xr-x 3 root root   4096 Apr 24 11:14 /tmp/pear/temp/pear-build-rootD4MO1w/install-mcrypt-1.0.1/usr/lib
    28355   4 drwxr-xr-x 3 root root   4096 Apr 24 11:14 /tmp/pear/temp/pear-build-rootD4MO1w/install-mcrypt-1.0.1/usr/lib/php
    28368   4 drwxr-xr-x 2 root root   4096 Apr 24 11:14 /tmp/pear/temp/pear-build-rootD4MO1w/install-mcrypt-1.0.1/usr/lib/php/20170718
    27762 164 -rwxr-xr-x 1 root root 164976 Apr 24 11:14 /tmp/pear/temp/pear-build-rootD4MO1w/install-mcrypt-1.0.1/usr/lib/php/20170718/mcrypt.so
    
    Build process completed successfully
    Installing '/usr/lib/php/20170718/mcrypt.so'
    install ok: channel://pecl.php.net/mcrypt-1.0.1
    configuration option "php_ini" is not set to php.ini location
    You should add "extension=mcrypt.so" to php.ini
    
  3. create a /etc/php/7.2/mods-available/mcrypt.ini
    ; configuration for php mcrypt module
    ; priority=20
    extension=mcrypt.so
    
  4. create a symlink for mcrypt under fpm
    root@hydrogen:/etc/php/7.2# cd fpm/conf.d
    root@hydrogen:/etc/php/7.2/fpm/conf.d# ln -s ../../mods-available/mcrypt.ini 20-mcrypt.ini
    
  5. restart fpm service
    root@hydrogen:/etc/php/7.2/fpm/conf.d# systemctl restart php7.2-fpm.service