PHP script uitvoeren vanaf de command line (CLI)

Vanaf de command line een PHP script uitvoeren is handig bij het uitvoeren van cronjobs.


PHP Configuratie

Aangepaste PHP.ini laden

php --php-ini /var/www/vhosts/davidvandertuijn.nl/etc/php.ini /var/www/vhosts/davidvandertuijn.nl/index.php

In dit voorbeeld laad ik de PHP configuratie van het domein davidvandertuijn.nl in, anders zal de default PHP configuratie (e.g. /etc/php.ini) worden gebruikt.

Defineer een PHP ini waarde

php –d memory_limit=512M /var/www/vhosts/davidvandertuijn.nl/index.php

In dit voorbeeld wordt tijdelijk het geheugen limit verhoogd voor het uitvoeren van het script.


Parameters

Parameters in het Kohana Framework

Syntax

php index.php --uri=your/uri/here --get=query=string&options=here --method=POST --post=more=query&strings=yes
php /var/www/vhosts/davidvandertuijn.nl/index.php --uri=cronjob/synchroniseren --method=POST --post=client_id=davidvandertuijn

De parameter 'uri' wordt herkend als route in het Kohana Framework zodat de functie 'action_synchroniseren' in de controller 'cronjob' wordt uitgevoerd.

De paramater 'post' wordt herkend als $_POST['client_id'] = 'davidvandertuijn';

Meer informatie: CLI | Kohana User Guide

Parameters in PHP

php test.php cronjob synchroniseren davidvandertuijn

Om parameters in PHP op te vragen kan de gereserveerde variabele $argv worden gebruikt:

echo $argv[1]; // cronjob
echo $argv[2]; // synchroniseren
echo $argv[3]; // davidvandertuijn

Zie ook: getopt()


Beveiliging

Het PHP script is ongewenst toegankelijk via http://www.davidvandertuijn.nl/cronjob/synchroniseren .

Het is bij voorkeur aanbevolen om cronjob scripts buiten de DOCUMENT_ROOT te plaatsen zodat deze niet via een URL aanroep uitgevoerd kunnen worden.

Beveiliging in het Kohana Framework

Om te controleren of een script wordt uitgevoerd vanaf de command line in het Kohana Framework:

if (Kohana::$is_cli)
{
    // Uitvoeren
}

Beveiliging in PHP

Om te controleren of een script wordt uitgevoerd vanaf de command line vanaf PHP 4.2.0

if (PHP_SAPI === 'cli') 
{
    // Uitvoeren
}

Zie ook: php_sapi_name()

David van der Tuijn
"Mijn naam is David van der Tuijn, als senior php developer bij Floro Webdevelopment B.V. werk ik samen met een projectleider, back-end developers, front-end developers en designers, op basis van een functioneel- (FO) en technisch ontwerp (TO), bouw ik webapplicaties die voldoen aan de nieuwste ontwikkelingen op internet gebied. Ik werk zelfstandig, weet hoe een architectuur opgezet moet worden en kan deze uitdragen in een multidisciplinair team. binnen een project adviseer ik over de juiste methoden en technieken. Ik ontwikkel en bewaak de kwaliteit van de development werkzaamheden in projecten en kan projecten binnen een afgegeven planning afronden."