I wrote a PHP script and I'm trying to read user input from the command line. I started of with
$myVar = exec('read myVar; echo $myVar;');
which worked fine, but when typing the input the arrow keys didn't work the way it should. I learned that this could be solved with the -e switch, so it became:
$myVar = exec('read -e myVar; echo $myVar;');
Now this worked like a charm in my development envionment but unfortunately it seems like in our production environment PHP doesn't use a bash shell and doesn't support the -e switch, and it's probably not easy to change this.
According to the third answer to this question one can force PHP to use bash, so it became:
$myVar = exec('/bin/bash -c "read -e myVar; echo $myVar"');
Now, unfortunately this doesn't work as the variable myVar is not set.
When I run the commands directly from the command line $myVar (the shell variable) is set with whatever my input is, and consequently echo'ed
However when using the -c option, either in a PHP-exec() or directly on the command line like this:
/bin/bash -c "read -e myVar; echo $myVar";
$myVar isn't set at all, and an empty string (or whatever was the previous value of $myVar) is echo'ed
What do I do wrong here?