`shell.php` is an interactive shell based on [[https://psysh.org/|PsySH]] (intended to be the successor of `eval.php`). To get around the problem of fatal errors causing the PHP process to exit, it uses a forked subprocess and `stream_select` to run commands. Apparently when the subprocess is created it immediately receives some kind of signal which confuses `stream_select`.
```
tgr@mw1279:~$ sudo -u www-data php /srv/mediawiki/multiversion/MWScript.php shell.php enwiki
[Fri Feb 9 23:36:25 2018] [hphp] [31577:7f7e46ae1200:0:000001] []
Notice: Writing to /home/tgr/.config/psysh is not allowed. in /srv/mediawiki/php-1.31.0-wmf.20/vendor/psy/psysh/src/Psy/ConfigPaths.php on line 213
Psy Shell v0.8.11 (PHP 5.6.99-hhvm — cli) by Justin Hileman
>>> 1
=> 1
[Fri Feb 9 23:36:41 2018] [hphp] [31577:7f7e46ae1200:0:000002] []
Warning: unable to select [4]: Interrupted system call in /srv/mediawiki/php-1.31.0-wmf.20/vendor/psy/psysh/src/Psy/ExecutionLoop/ForkingLoop.php on line 57
RuntimeException with message 'Error waiting for execution loop.'
>>> tgr@mw1279:~$
```
`shell.php` is a lot more powerful than `eval.php`, it would be nice to get it working everywhere.
(Also PsySH tries to store the history in `~/.config/psysh` but can't since it's running as `www-data`, but that's a much more minor annoyance.)