Cross platform setting of environment scripts for PHP.
Install in project
composer require asika/cross-envInstall globally
composer global require asika/cross-envJust call cross-env:
cross-env APP_ENV=dev TEST_MODE=real php my-code.phpIf you install it in project, use composer scripts:
{
...
"scripts": {
"build:dev": "cross-env APP_ENV=dev TEST_MODE=real php my-code.php"
},
...
}Then call it by composer
composer build:dev
# OR
composer run build:devYou can also call bin file directly:
./vendor/bin/cross-env APP_ENV=dev TEST_MODE=real php my-code.phpSee https://getcomposer.org/doc/articles/scripts.md
If you have installed node cross-env and has a prior order in PATH,
you can use set-env as an global alias.
Call cross-source to set a file as env vars.
cross-source /path/.env php my-code.phpIf you want to use cross-env in your own CLI Application, you can use CrossEnv\CrossEnv:
$returnCode = \CrossEnv\CrossEnv::runWithCommand('APP_ENV=dev TEST_MODE=real php my-code.php');
// OR
$returnCode = \CrossEnv\CrossEnv::runWithArgs([
'APP_ENV=dev',
'TEST_MODE=real',
'php',
'my-code.php'
);Add second argument as a callable.
use Symfony\Component\Process\Process;
\CrossEnv\CrossEnv::runWithCommand(
'APP_ENV=dev TEST_MODE=real php my-code.php',
function (string $type, string $buffer) {
if ($type === Process::ERR) {
// Handle error
} else {
// Handle output
}
}
);See Symfony/Process: https://symfony.com/doc/current/components/process.html#usage