Skip to content

icanhazstring/systemctl-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Andreas Frömer
Jun 27, 2023
ef007c6 · Jun 27, 2023

History

92 Commits
Nov 4, 2022
Jun 27, 2023
Jun 27, 2023
Dec 30, 2021
Jul 9, 2017
May 27, 2020
May 27, 2021
Feb 16, 2020
Feb 16, 2020
Oct 24, 2020
Mar 25, 2021
Feb 16, 2020
Jun 27, 2023
Nov 4, 2022
Feb 16, 2020
Feb 16, 2020
Nov 9, 2020

Repository files navigation

systemctl-php

CI Pipeline Code Climate Test Coverage Join the chat at https://gitter.im/icanhazstring/systemctl-php

PHP wrapper for systemctl

How to install

$ composer require icanhazstring/systemctl-php

Current supported units

See Units

If you like to add support for more units, feel free to grab an issue and contribute.

Current supported commands

  • start
  • stop
  • enable
  • disable
  • reload
  • restart
  • isEnabled
  • isActive

If you like to add support for more commands, feel free to contribute.

How to change the binary

SystemCtl::setBinary('/bin/systemctl');

How to change command timeout

To change command tmeout simply call the static method setTimeout.

SystemCtl::setTimeout(10);

The default timeout is set to 3 seconds

"I need sudo to run commands"

If you need sudo, you should execute the bin executable with sudo. The incode support was dropped due to security reason.

How do I start/stop/restart a unit?

Simply is that. First we instantiate a SystemCtl instance an load a unit from a specific type. Here we use a Service. You will always get back true if the command succeeded. Otherwise the method will throw a CommandFailedException.

$systemCtl = new SystemCtl();

// start/stop/enable/disable/reload/restart
$systemCtl->getService('nginx')->start();
$systemCtl->getService('nginx')->stop();

How to Contribute

Clone the repo and install using composer

$ composer install

Make your changes and make sure you run test, codesniffer and phpstan.

$ composer test
> vendor/bin/phpunit
PHPUnit 9.5.3 by Sebastian Bergmann and contributors.

...............................................................  63 / 128 ( 49%)
............................................................... 126 / 128 ( 98%)
..                                                              128 / 128 (100%)

Time: 00:00.033, Memory: 10.00 MB

OK (128 tests, 192 assertions)

$ composer cs
> vendor/bin/phpcs --standard=PSR2 src/ && vendor/bin/phpcs --standard=PSR2 tests/

$

$ composer analyse
> vendor/bin/phpstan analyse --no-progress
Note: Using configuration file /data/systemctl-php/phpstan.neon.


 [OK] No errors

$

Credits

This library is heavily influenced by @mjanser php-systemctl.