This package is compliant with PSR-1, PSR-2, PSR-4 and PSR-12. If you notice compliance oversights, please send a patch via pull request.
composer require --dev phpsu/phpsu
If you have problems with conflicting versions eg. symfony:<5 you can use the composer-bin-plugin.
composer require --dev bamarni/composer-bin-plugin
composer bin phpsu require --dev phpsu/phpsu
# we recommend to install it with the auto installation scripts:
composer config scripts.bin "echo 'bin not installed'"
composer config scripts.post-install-cmd '@composer bin all install --ansi'
composer config scripts.post-update-cmd '@composer bin all update --ansi'
echo '/vendor-bin/**/vendor' >> .gitignore
if you want to use phpsu via Docker we have a minimal phpsu docker image: phpsu/phpsu.
you can execute any phpsu command via something like this:
docker run --rm -it -u $(id -u):$(id -g) -v $(pwd):/app -v ~/.ssh:/home/phpsu/.ssh phpsu/phpsu:latest phpsu ssh production
The following versions of PHP are supported by this version.
- PHP
8.1
,8.2
,8.3
- Compatible and continuously tested with symfony
5
,6
,7
- for older versions go to version 3.1.0
- for older versions go to version 2.3.0
- or version 1.1.0
Required for synchronisation are:
bash
on execution System (and the ssh user needs to have a shell whereset -o pipefail
is possible (eg. not sh on debian as that is dash and does not work))ssh
on execution Systemrsync
on executing Systemmysqldump
on source Systemmysql
on destination Systems
Unfortunately we do not support Windows yet.
The full Documentation can be found in the /docs
Directory.
Simple configuration example phpsu-config.php
:
<?php
declare(strict_types=1);
$globalConfig = new \PHPSu\Config\GlobalConfig();
$globalConfig->addFilesystem('Image Uploads', 'var/storage')
->addExclude('*.mp4')
->addExclude('*.mp3')
->addExclude('*.zip')
->addExcludes(['*.jpg', '*.gif']);
$globalConfig->addSshConnection('hostA', 'ssh://user@localhost:2208');
$globalConfig->addAppInstance('production', 'hostA', '/var/www/')
->addDatabase('app', 'production01db', 'root', 'password', '127.0.0.1', 3307)
->addExclude('one_single_table_name')
->addExclude('/cache/')
->addExclude('/session$/')
->addExcludes(['/log/']);
$globalConfig->addAppInstance('local')
->addDatabase('app', 'testingLocal', 'root', 'root');
return $globalConfig;
phpsu sync production --dry-run
phpsu sync p --no-db
phpsu sync p --no-fs
phpsu sync production testing --all
install for Contribution
git clone [email protected]:phpsu/phpsu.git
cd phpsu
composer install
composer test
You can also check, whether any changes you made are affecting your tests immediately on save:
composer test:watch
If you see a low Mutation Score Indicator (MSI)
value, you can show the mutations that are escaping:
composer infection -- -s
If you have an unwanted BC break in your Pull Request you can run the same test locally with docker:
docker run --rm -v `pwd`:/app nyholm/roave-bc-check --format=markdown > results.md
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.