PHP (algemeen)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

Arrays

Zie Arrays (PHP)

Commentaarregels

<?php
echo "Hello World!";   // Dit is een commentaarregel
echo "Hello World!";   # Dit is ook een commentaarregel

/*
Dit zijn ook commentaarregels
*/

/*
 * Dit zijn ook commentaarregels. Ik denk dat het een 
 * conventie is, om de regels van sterretjes te voorzien.
 * Ik houd niet van binaire commentaar-tekens. Het is
 * bij uitstek iets wat ik bij HTML irritant vind,
 * omdat je commentaarregels daardoor niet kunt nesten.
 */

#######################################################
# Dit is een heading
#######################################################
#
# En dit is een subheading
##############################
#
# * De heading is hier 55 tekens breed. Da's de breedte
#   van Sublime Editor op m'n (relatief kleine)
#   1024x?-scherm op kantoor
# * De subheading is hier zo'n 30 tekens breed.
#   Als-ie maar flink korter is dan die van de 
#   header, zodat ik de hierarchie goed kan zien.
#
echo "Hello, world!"
?>

Display Errors

Gebruik phpinfo() om de status van display_errors af te lezen. Gebruik

<?php
 
 ini_set('display_errors', 1); 

?>

om dit aan te passen.

Wellicht een betere oplossing voor bv. een testserver: Pas bestand

/etc/php5/apache2/php.ini

aan, of welk bestand dan ook dat bij je PHP-versie hoort. Configureer de volgende instellingen:

display_errors = On

en

display_startup_errors = On

Bron: http://technomancer.me.uk/blog/enabling-php-error-messages-drupal

E-mail versturen

Bestand:PHPEmail.png
Middels phpinfo() kun je zien of er een mailserver is geconfigureerd

Om vanuit PHP e-mail te versturen, heb je in ieder geval de volgende issues:

  • Er moet een mailserver geconfigureerd zijn. Dat kun je via phpinfo() testen;
  • Veel ontvangende mail-servers doen een soort reverse lookup om te verifiëren dat de verzendende mailserver ook echt bestaat.

Er is ook een andere manier: Vergelijkbaar met nail (ipv. mail) kun je een externe SMTP-server specificeren. Dat vind ik eigenlijk veel logischer. De locale server functioneert dan als een gewone e-mailclient.

1. Controleer phpinfo()

Maak een testbestand aan met extentie .php, bv. phpinfo.php:

<?php
	phpinfo();
?>

2. Test-email

Bv.:

<?php
	$Message="Dit is de body";
	$Topic="Onderwerp";

	mail('info@example.com', $Topic, $Message);
?>

Bron: http://php.net/manual/en/function.mail.php

Fatal error: Allowed memory size ... exhausted

Complete foutmelding:

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 8 bytes) 
in /var/www/MySite/sites/default/modules/views/modules/views_user.inc on line 102

Waarschijnlijk wordt dit verzoorzaakt door een PHP-geheugenlimiet. Het genoemde getal twee keer gedeeld door 1024, geeft namelijk 16 MB, een veelvoorkomende limiet.

In /etc/php5/apache2/php.ini de volgende regel als volgt aangepast:

memory_limit = 64M      ; Maximum amount of memory a script may consume (16MB)

Herstart vervolgens Apache, zodat de aangepaste instellingen van kracht worden.

Fatal error: Maximum execution time exceeded

Complete foutmelding:

Fatal error: Maximum execution time of 30 seconds exceeded in 
/var/www/MySite/sites/default/modules/backup_migrate/backup_migrate.module on line 1178

Het betreffende gebied in php.ini:

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

max_execution_time = 30     ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 256M      ; Maximum amount of memory a script may consume (16MB)

Het gaat hierbij om de eerste regel.

print

Voorbeeld:

<?php
   print("Hello World");
?>

Server-bestanden

Server-bestanden met zowel HTML als PHP, moeten de extensie .php hebben.

Bronnen