PHP Censor is a open source self-hosted continuous integration server for PHP projects (Fork of PHPCI)

Code Quality Rank: L4
Monthly Downloads: 3
Programming language: PHP
License: BSD 2-clause "Simplified" License
Latest version: v2.0.5

PHP Censor alternatives and similar libraries

Based on the "Continuous Integration" category.
Alternatively, view PHP Censor alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of PHP Censor or a related project?

Add another 'Continuous Integration' Library


PHP Censor Latest Version Total downloads License

PHP Censor is an open source, self-hosted, continuous integration server for PHP projects (PHPCI fork). Official twitter @php_censor.

PHP Censor versions:

Version Latest Branch Status Minimal PHP Version
1.0 (Morty Smith) 1.0.16 release-1.0 Old version (UNSUPPORTED) >=5.6, <8.0
1.1 (Birdperson) 1.1.6 release-1.1 Old version (UNSUPPORTED) >=5.6, <8.0
1.2 (Summer Smith) 1.2.4 release-1.2 Old version (UNSUPPORTED) >=5.6, <8.0
1.3 (Jerry Smith) 1.3.5 release-1.3 Old stable version (ONLY FIXES) >=5.6, <8.0
2.0 (Rick Sanchez) 2.0.5 release-2.0 Current stable version ([Upgrade from v1 to v2](docs/UPGRADE_2.0.md)) >=7.4
2.1 WIP master Feature minor version (WIP) >=7.4


More [screenshots](docs/en/screenshots.md).

System requirements

  • Unix-like OS (Windows isn't supported);

  • PHP 7.4+ (with OpenSSL support and enabled functions: exec(), shell_exec() and proc_open());

  • Web-server (Nginx or Apache2);

  • Database (MySQL/MariaDB or PostgreSQL);

  • Beanstalkd queue;


  • Clone project from [GitHub](docs/en/sources/github.md), [Bitbucket](docs/en/sources/bitbucket.md) (Git/Hg), [GitLab](docs/en/sources/gitlab.md), [Git](docs/en/sources/git.md), Hg (Mercurial), SVN (Subversion) or from local directory;

  • Set up and tear down database tests for [PostgreSQL](docs/en/plugins/pgsql.md), [MySQL](docs/en/plugins/mysql.md) or [SQLite](docs/en/plugins/sqlite.md);

  • Install [Composer](docs/en/plugins/composer.md) dependencies;

  • Run tests for PHPUnit, Atoum, Behat, Codeception and PHPSpec;

  • Check code via Lint, PHPParallelLint, Pdepend, PHPCodeSniffer, PHPCpd, PHPCsFixer, PHPDocblockChecker, PHPLoc, PHPMessDetector, PHPTalLint and TechnicalDebt;

  • Run through any combination of the other [supported plugins](docs/en/README.md#plugins), including Campfire, CleanBuild, CopyBuild, Deployer, Env, Git, Grunt, Gulp, PackageBuild, Phar, Phing, Shell and Wipe;

  • Send notifications to Email, XMPP, Slack, IRC, Flowdock, HipChat and Telegram;

  • Use your LDAP-server for authentication;


[Versions changelog](CHANGELOG.md).


See milestones.


  • Go to the directory in which you want to install PHP Censor, for example: /var/www:
cd /var/www
  • Create project by Composer:
composer create-project \
    php-censor/php-censor \
    php-censor.local \

Or download latest archive from GitHub, unzip it and run composer install.

  • Create an empty database for your application (MySQL/MariaDB or PostgreSQL);

  • Install Beanstalkd Queue (Optional, if you are going to use a queue with Worker):

# For Debian-based
aptitude install beanstalkd
# Check if the service is running:
/etc/init.d/beanstalkd status
# If it's not running, start it:
/etc/init.d/beanstalkd start
  • Install PHP Censor itself:
cd ./php-censor.local

# Interactive installation
./bin/console php-censor:install

# Non-interactive installation
./bin/console php-censor:install \
    --url='http://php-censor.local' \
    --db-type=pgsql \
    --db-host=localhost \
    --db-pgsql-sslmode=prefer \
    --db-name=php-censor \
    --db-user=php-censor \
    --db-password=php-censor \
    --db-port=default \ # Value 'default': 5432 for PostgreSQL and 3306 for MySQL
    --admin-name=admin \
    --admin-password=admin \
    --admin-email='[email protected]' \
    --queue-host=localhost \
    --queue-port=11300 \

# Non-interactive installation with prepared config.yml file
./bin/console php-censor:install \
    --config-from-file=yes \
    --admin-name=admin \
    --admin-password=admin \
    --admin-email='[email protected]'
  • [Add a virtual host to your web server](docs/en/virtual_host.md), pointing to the public directory within your new PHP Censor directory. You'll need to set up rewrite rules to point all non-existent requests to PHP Censor;

  • [Set up the PHP Censor Worker](docs/en/workers/worker.md);

Installing via Docker

If you want to install PHP Censor as a Docker container, you can use php-censor/docker-php-censor project.


  • Go to your PHP Censor directory (to /var/www/php-censor.local for example):

    cd /var/www/php-censor.local
  • Pull the latest code from the repository by Git (If you want the latest master branch):

    git checkout master
    git pull -r

    Or pull the latest version:

    git fetch
    git checkout <version>
  • Update the Composer dependencies: composer install

  • Update the database scheme:

    ./bin/console php-censor-migrations:migrate
  • Restart Supervisord workers (If you use workers and Supervisord):

    sudo supervisorctl status
    sudo supervisorctl restart <worker:worker_00>
    sudo supervisorctl restart <worker:worker_nn>

    Or restart Systemd workers (If you use workers and Systemd):

    sudo systemctl restart <[email protected]>
    sudo systemctl restart <[email protected]>

Configuring project

There are several ways to set up the project:

  • Add project without any project config (Runs "zero-config" plugins, including: Composer, TechnicalDebt, PHPLoc, PHPCpd, PHPCodeSniffer, PHPMessDetector, PHPDocblockChecker, PHPParallelLint, PHPUnit and Codeception);

  • Similar to Travis CI, to support PHP Censor in your project, you simply need to add a .php-censor.yml file to the root of your repository;

  • Add project config in PHP Censor project page (And it will cancel file config from project repository);

The project config should look something like this:

    action:    "install"
    directory: "."
    config: "phpunit.xml"
    allow_failures: true
    standard: "PSR2"
    allow_failures: true
    default_mailto_address: [email protected]

More details about [configuring project](docs/en/configuring_project.md).


Run to apply latest migrations:

cd /path/to/php-censor
./bin/console php-censor-migrations:migrate

Run to create a new migration:

cd /path/to/php-censor
./bin/console php-censor-migrations:create NewMigrationName


cd /path/to/php-censor

./vendor/bin/phpunit --configuration ./phpunit.xml.dist --coverage-html ./tests/runtime/coverage -vvv --colors=always

For Phar plugin tests set 'phar.readonly' setting to Off (0) in php.ini config. Otherwise the tests will be skipped.

For database tests create an empty 'test_db' database on 'localhost' with user/password: root/<empty> for MySQL and with user/password: postgres/<empty> for PostgreSQL (You can change default test user, password and database name in phpunit.xml[.dist] config constants). If connection failed the tests will be skipped.


[Full PHP Censor documentation](docs/en/README.md).


PHP Censor is open source software licensed under the [BSD-2-Clause license](LICENSE).

*Note that all licence references and agreements mentioned in the PHP Censor README section above are relevant to that project's source code only.