The Command-Line Environment

In order to use PHP from the command line, you need to have a PHP executable installed on your system. When running in a web environment, PHP is usually installed as an Apache module, but it is also possible to build a standalone program called php that can be used as a command-line interface (CLI).

Differences Between CLI and CGI Binaries

Beginning in version 4.2, PHP started to differentiate between binary programs intended for CGI and those for CLI use. Both executables provide the same language interpreter, but the CLI version includes the following changes to make it more suitable for command-line use:

  • No HTTP headers are written in the output.

  • Error messages do not contain HTML formatting.

  • The max_execution_time value is set to zero, meaning that the script can run for an unlimited amount of time.

To find out whether a php binary is a CGI or CLI version, you can run it with the v switch to see its version information. For instance, the following output is from the CLI version PHP 5.0.3:

 PHP 5.0.3 (cli) (built: Dec 15 2004 08:07:57) Copyright (c) 1997-2004 The PHP Group Zend Engine v2.0.3, Copyright (c) 1998-2004 Zend Technologies 

The value in parentheses after the version number indicates the Server Application Programming Interface (SAPI) that is in use. You can also find this value dynamically in a script by looking at the return value from the function php_sapi_name.

Windows Distributions The Windows distributions of PHP 4.2 included two binariesthe CGI version was called php.exe, and the CLI binary was php-cli.exe. For PHP 4.3, both were called php.exe, but they were found in folders called cli and cgi, respectively.

For PHP 5 and higher, php.exe is the CLI version, and now the CGI binary is named php-cgi.exe. A new php-win.exe CLI binary is also included that runs silentlythat is, the user doesn't need to open a command prompt window.

PHP Shell Scripts on Linux/Unix

On a Linux/Unix platform, a shell script is simply a text file that contains a series of instructions that are to be processed by a specific language interpreter. The simplest shell interpreter is the Bourne Shell, sh, although these days it has been superseded by the Bourne Again Shell, bash, which is fully compatible with sh but also includes other useful features.

Because the command language available in most command shells is very restrictive and often requires calls to external programs, PHP is not only a more powerful language, suitable for many tasks, but its built-in features also usually give better performance than the standard system tools.

PHP Location The php executable is usually installed to /usr/local/bin or /usr/bin, depending on whether it was installed from source or a binary package, but your actual location may vary. Try typing which php to find the location if you do not know it.

All shell scripts must begin with the characters #!, followed by the path to the command interpreter that is to be used. For a traditional shell script, this would look like the following:


However, for a PHP script, the first line would be


Hash Bang The most widely used pronunciation for the character sequence #!, found at the start of a shell script, is "hash bang," although sometimes it is also referred to as "shebang."

The file permissions on a shell script must allow the file to be executed. To set execute permission for the owner of the file, you use the following command:

 $ chmod u+x myscript.php 

If your script is to be run by any system user, the command to set global execute permission is as follows:

 $ chmod a+x myscript.php 

If the execute bit is not set, you can still run a file that contains a series of PHP commands through the PHP interpreter by invoking php with a filename argument. The following two commands are identical to one another (the f switch can be used for clarity but is not required):

 $ php myscript.php $ php f myscript.php 

Script Names There are no naming requirements for any type of shell script. However, it is useful to retain the .php extension so that the filename indicates a PHP script. Bourne shell scripts sometimes have the file extension .sh but often are command names with no file extension at all.

PHP Command Scripts on Windows

Windows does not allow an alternate command interpreter to be used in a batch script, so to execute a PHP script under Windows, you have to pass a filename argument to php.exe. The f switch is optional, so the following two commands are identical to one another:

 > php.exe myscript.php > php.exe f myscript.php 

Batch Scripts If you want, you can create a simple batch script to invoke php.exe with the correct filename argument so that you can run your script by using a single command.

To do so, you create a file named myscript.bat that contains the command php.exe, followed by your script name. You can then run that script by simply entering myscript at the command prompt.

Embedding PHP Code

Just as when it is used in the web environment, PHP code in a command script needs to be embedded. Any text that does not appear inside <?php tags is sent straight to the output.

Because you usually want to create a script that is entirely made up of PHP code, you must remember to begin every PHP shell script with a <?php tag. However, the embedded nature of PHP means you could create a PHP script that generates only certain elements within a largely static text file.

    Sams Teach Yourself PHP in 10 Minutes
    Sams Teach Yourself PHP in 10 Minutes
    ISBN: 0672327627
    EAN: 2147483647
    Year: 2005
    Pages: 151
    Authors: Chris Newman

    Similar book on Amazon © 2008-2017.
    If you may any questions please contact us: