How to distinguish command-line and web-server invocation?

Piskvor left the building picture Piskvor left the building · Dec 5, 2008 · Viewed 37.5k times · Source

Is there a way to distinguish if a script was invoked from the command line or by the web server?

(See What is the canonical way to determine commandline vs. http execution of a PHP script? for best answer and more detailed discussion - didn't find that one before posting)


I have a (non-production) server with Apache 2.2.10 and PHP 5.2.6. On it, in a web-accessible directory is my PHP script, maintenance_tasks.php. I would like to invoke this script from the command line or through a HTTP request (by opening in a browser). Is there some variable that allows me to reliably determine how script is invoked?

(I already tackled the issues of different views for each type of invocation and HTTP response timeout, just looking for a way of telling the two invocation types apart)

I'll be trying different things and add my findings below.

Duplicate: What is the canonical way to determine commandline vs. http execution of a PHP script?

Answer

Shocker picture Shocker · Dec 5, 2008

If called from command line, the server variable HTTP_USER_AGENT is not set. I use this constant to define, whether the script is called from command line or not:

define("CLI", !isset($_SERVER['HTTP_USER_AGENT']));