I've always wondered if it's possible to write a PHP command-line script that launches an editor, lets the user type something, then reads in whatever they type (like a git commit log message).
Turns out, it's pretty straightforward with the Symfony Process component.
<?php require_once __DIR__ . '/vendor/autoload.php'; use Symfony\Component\Process\Process; // Create a temporary file so the user has something to type into $edit_file = tempnam(sys_get_temp_dir(), "_log"); // Attempt to load the user's EDITOR from the environment. Default to vim otherwise. $editor = getenv('EDITOR') !== false ? getenv('EDITOR') : 'vim'; // Launch the editor and open the temp file // This will pause execution of our script until they save and close the editor. $process = new Process(['vim', $edit_file]); $process->setTty(true); $process->run(); // Read back the data they entered. $data = file_get_contents($edit_file); echo "$data\n"; // Clean up after ourselves. unlink($edit_file);