Question

I'm trying to debug a PHP application that is running from the command line. I want to use a cronjob later on to invoke the module every hour.

For debugging I execute the PHP script like this:

php -c /etc/php5/apache2/php.ini /var/www/module/test/autostart/start.php 12 &

(forget about the „12“ - it's a parameter for the script)

Now basically I get this output via SSH:

[2] 10181
[1] Done                php -c /etc/php5/apache2/php.ini /var/www/module/test/autostart/start.php 12 

I have no idea what I have changed but a few weeks ago I got the actual php errors directly on the screen. That's what I expect. But I don't know how to force PHP to output me the result directly.

Was it helpful?

Solution 2

When you use & at the end, command is started in background. You can see background processes by command jobs. When you try it, you can see php process in 'stopped' state.

Problem is that php is waiting for input. It is caused by this php extension:

readline php extension

Run it this way:

php -c /etc/php5/apache2/php.ini /var/www/module/test/autostart/start.php 12 < /dev/null &

or disable that extension.

OTHER TIPS

You won't see any output because you are running the script with an "&", you fg command to bring back the process to the foreground.

drop the ampersand from the end of the commandline. it tells the shell to run the command in the background.

edit: otherwise, it could be because you're using the web-tuned php.ini: i would expect that configuration to log errors into a logfile.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top