1
0
mirror of https://github.com/laravel/valet.git synced 2026-02-04 16:10:08 +01:00
Files
laravel-valet/cli/Valet/PhpFpm.php
2016-05-10 13:26:39 -05:00

100 lines
2.1 KiB
PHP

<?php
namespace Valet;
use Exception;
use Symfony\Component\Process\Process;
class PhpFpm
{
var $brew, $cli, $files;
var $taps = [
'homebrew/dupes', 'homebrew/versions', 'homebrew/homebrew-php'
];
/**
* Create a new PHP FPM class instance.
*
* @param Brew $brew
* @param CommandLine $cli
* @param Filesystem $files
* @return void
*/
function __construct(Brew $brew, CommandLine $cli, Filesystem $files)
{
$this->cli = $cli;
$this->brew = $brew;
$this->files = $files;
}
/**
* Install and configure DnsMasq.
*
* @return void
*/
function install()
{
if (! $this->brew->installed('php70') && ! $this->brew->installed('php56')) {
$this->brew->ensureInstalled('php70', $this->taps);
}
$this->files->ensureDirExists('/usr/local/var/log', user());
$this->updateConfiguration();
$this->restart();
}
/**
* Update the PHP FPM configuration to use the current user.
*
* @return void
*/
function updateConfiguration()
{
$contents = $this->files->get($this->fpmConfigPath());
$contents = preg_replace('/^user = .+$/m', 'user = '.user(), $contents);
$contents = preg_replace('/^group = .+$/m', 'group = staff', $contents);
$this->files->put($this->fpmConfigPath(), $contents);
}
/**
* Restart the PHP FPM process.
*
* @return void
*/
function restart()
{
$this->stop();
$this->brew->restartLinkedPhp();
}
/**
* Stop the PHP FPM process.
*
* @return void
*/
function stop()
{
$this->brew->stopService('php56', 'php70');
}
/**
* Get the path to the FPM configuration file for the current PHP version.
*
* @return string
*/
function fpmConfigPath()
{
if ($this->brew->linkedPhp() === 'php70') {
return '/usr/local/etc/php/7.0/php-fpm.d/www.conf';
} else {
return '/usr/local/etc/php/5.6/php-fpm.conf';
}
}
}