How to add PHP support for jailed SSH users in ISPConfig 3

Jailkit is an easy-to-use tool to create and maintain jail environments for shell users on Linux. In this guide, I will show you how to move PHP and its dependencies into the jail so that the jailed user can execute PHP scripts inside the jail on an ISPConfig server.

Edit the jailkit .ini file and add a section for PHP at the end of the file

Starting with ISPConfig 3.2, there is already a section for PHP in the jailkit .ini file, so you can skip the step to edit jk_init.ini file.

Open the jk_init.ini file with an editor if you are using ISPConfig 3.1 (and not 3.2):

nano /etc/jailkit/jk_init.ini

and paste the following lines at the end of the file:

[php]
comment = the php interpreter and libraries
executables = /usr/bin/php
directories = /usr/lib/php, /usr/share/php, /etc/php, /usr/share/php-geshi, /usr/share/zoneinfo
includesections = env

[env]
comment = environment variables
executables = /usr/bin/env

Then run the command (this command is required in ISPConfig 3.1 and 3.2):

jk_init -c /etc/jailkit/jk_init.ini -f -k -j /var/www/clients/client1/web1 php

To install PHP and its dependencies into the jail.

Add PHP for all newly jailed shell users

To add PHP for all newly jailed shell users that you add in ISPConfig, follow these steps:

  1. Login to ISPConfig and go to System > Server Config
  2. Select the server and go to the jailkit tab.
  3. Add the word "php" separated by a white space at the end of the "Jailkit chroot app sections" field and press save.

ISPConfig PHP Jailkit

6 thoughts on “How to add PHP support for jailed SSH users in ISPConfig 3”

  1. Great tutorial, works perfect but I have a problem…
    When I use php5 command lots of libraries can’t be loaded, maybe I forgot something…

    Example warning:

    PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php5/20131226/pdo.so’ – /usr/lib/php5/20131226/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0

    I’m using debian 8.

    Any idea about how to fix this?

    Thanks.

    Reply
  2. Do not use the [ B ][ / B ] tags around /usr/share/zoneinfo

    Example:
    directories = /usr/lib/php5, /usr/share/php, /usr/share/php5, /etc/php5, /usr/share/php-geshi, /usr/share/zoneinfo

    Also, if you use ioncube, add the path in the directories –

    Example:
    directories = /usr/lib/php5, /usr/share/php, /usr/share/php5, /etc/php5, /usr/share/php-geshi, /usr/share/zoneinfo, /usr/local/ioncube

    You may also need to add /usr/bin/php to the executables section.

    Example:
    executables = /usr/bin/php5, /usr/bin/php

    Reply

Leave a Comment

*