Nathan Osman
Nathan Osman

Reputation: 73295

How can a PHP script detect if it has been invoked as a script or from the shell?

I have a PHP script on a webserver.

This file is invoked via the shell by another program but it could still be run by the webserver in response to an HTTP request.

How can the script determine the way it was invoked?

Upvotes: 1

Views: 123

Answers (4)

Dr Clue
Dr Clue

Reputation: 20

I write a lot of applications that run concurrently in the shell and web contexts, and this one liner makes it easy

function isWEB()
         {
         return $GLOBALS['argc']===NULL;
         }

Upvotes: 0

Jared Forsyth
Jared Forsyth

Reputation: 13172

There are certain environmental variables you can check. for example $_SERVER["REQUEST_METHOD"]

if (isset($_SERVER["REQUEST_METHOD"]))
   // run by server

good luck

Upvotes: 0

animuson
animuson

Reputation: 54787

If it is executed from the shell then it won't have HTTP headers because it wasn't requested from HTTP protocols.

Upvotes: 0

Michael Mrozek
Michael Mrozek

Reputation: 175705

There are lots of ways; I check if $_SERVER['HTTP_HOST'] is empty. I think the technically correct way is to see if php_sapi_name() returns cli

Upvotes: 3

Related Questions