PHP cli script does not output anything

MirroredFate picture MirroredFate · Aug 15, 2014 · Viewed 16.2k times · Source

So I have a php script which I execute using the following command:

php -f my_script.php myArguments

The script is under version control using svn. I just updated it, pasted the command to run it into a terminal, and executed it. However, there is no output. Not a failure message, not it printing anything, nothing. It looks like it never starts. Kind of like the following:

me:/srv/scripts# php -f my_script.php myArguments
me:/srv/scripts#

Other scripts will run just fine.

It is difficult for me to come up with an SSCCE, as I can't really share the code that is causing this, and I haven't been able to replicate this behavior intentionally. I have, however, seen this twice now. If I save my changes, revert the file, and paste them back in, there is a strong chance it will run just fine.

However, I am concerned by not knowing what is causing this odd behavior. Is there a whitespace character or something that tells PHP not to start, or output anything?

Here is what I've tried after seeing this behavior:

  • Modifying the script so it is a simple echo 'hello'

  • Putting nonsense at the beginning of the script, so it is unparseable.

  • Pasting in code from a working script

  • Banging my head on a wall in frustration

  • Trying it in another terminal/putty ssh connection.

Here's where it gets interesting: It actually works in a different terminal. It does everything as expected.

So does anyone have any ideas what might be causing this, or things I should try in order to determine the problem?

EDIT:

The "different terminal" is still the terminal application, just a new one.

I have sufficient permissions to execute the file, but even if I didn't, it should spit out a message saying I don't.

I intentionally introduced syntax errors in hopes that I would get PHP to spit out a parse error. There was still no output.

Answer

Mike B picture Mike B · Aug 22, 2014

display_errors might be disabled before runtime. You can turn it on manually with the -d switch:

php -d display_errors=1 -f my_script.php myArguments