Herramientas de usuario

Herramientas del sitio


informatica:programacion:php

PHP

Instalación

Debian

apt install php php-common

Extensiones:

apt install php-cli php-fpm php-json php-pdo php-mysql php-zip php-gd  php-mbstring php-curl php-xml php-pear php-bcmath

Integración con Apache:

apt install libapache2-mod-php

Si no estuviese instalado el servidor web Apache, se instalaría con:

apt install apache2 apache2-utils

Para descargar la última versión de PHP:

sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
sudo apt update
sudo apt install php8.2

Variables

Hay una serie de nombres que no podemos usar como variables porque pertenecen al propio lenguaje: palabras reservadas en PHP

Variables predefinidas

Listado completo en la web de PHP.

Constantes

A diferencia de las variables, las constantes no pueden modificar su valor.

Tenemos dos formas de definirlas en PHP: mediante la función define():

define ("BASE_URL", "http://localhost/proyecto");

O usando la palabra reservada const:

const BASE_URL = "http://localhost/proyecto";

const se puede usar a partir de la versión 5.3.0 de PHP y siempre que sea fuera de una clase.

Para usar las constantes se indican tal cual, sin usar el signo dolar:

const BASE_URL = "http://localhost/proyecto";
 
echo "Mi proyecto está accesible desde " . BASE_URL;

Operadores

Operador de control de errores

PHP incorpora un operador de control de errores: el signo de arroba (@). Cuando se pone delante de una expresión, cualquier error de diagnóstico que pueda generarse por esa expresión, será suprimido

$mi_archivo = @file('archivo_que_no_existe.txt');

Formularios

Hay dos formas de acceder a los datos de los formularios HTML:

  • $_POST
  • $_REQUEST

Cuando usemos un formuario GET, se usará la variable predefinida $_GET en lugar de $_POST.

Ejemplo:

<form action="foo.php" method="post">
    Name:  <input type="text" name="username" /><br />
    Email: <input type="text" name="email" /><br />
    <input type="submit" name="submit" value="Submit me!" />
</form>

Tendríamos dos posibilidades para aceder a los datos de ese formulario:

echo $_POST['username'];
echo $_REQUEST['username'];

Los puntos y espacios en blanco en los nombres de las variables son convertidos en guiones bajos (_). Por ejemplo <input name="a.b"> se convierte en $_REQUEST["a_b"]

PDF

Para crear ficheros PDF con bibliotecas libres tenemos un par de posibilidades:

Depuración

Mostrar errores

ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);

Si no se muestran los errores de sintaxis, hay que añadir o descomentar la siguiente línea al fichero php.ini:

display_errors = on

Linux o Windows

Si queremos saber la máquina en la que se está ejecutando un script de PHP:

if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    echo "Windows!";
} else {
    echo "No es Windows!";
}

Configuración

La configuración de PHP se puede cambiar en tiempo de ejecución mediante la función ini_set() y también, de forma parmanente, en el fichero de configuración de PHP php.ini.

Para saber dónde está dicho fichero de configuración, podemos lanzar PHP desde línea de comandos:

php -ini | grep Loaded

Veremos algo como:

Loaded Configuration File:         /etc/php.ini

En el anterior ejemplo, el fichero de configuración de PHP está en /etc/php.ini.

phpinfo

La función phpinfo() muestra información sobre la configuración actual de PHP en el servidor.

Cuando ejecutamos esta función desde el navegador, se mostrará como una página web (en HTML). Sin embargo, si la usamos desde línea de comandos, será texto plano. Ejemplo:

php > phpinfo();
phpinfo()
PHP Version => 5.4.45

System => Linux milinux 3.10.0-327.10.1.el7.x86_64 #1 SMP Sat Jan 23 04:54:55 EST 2016 x86_64
Build Date => Jan 11 2019 13:43:14
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini
Scan this dir for additional .ini files => /etc/php.d
Additional .ini files parsed => /etc/php.d/curl.ini,
/etc/php.d/dom.ini,
/etc/php.d/fileinfo.ini,
/etc/php.d/gd.ini,
/etc/php.d/gmp.ini,
/etc/php.d/json.ini,
/etc/php.d/ldap.ini,
/etc/php.d/mbstring.ini,
/etc/php.d/mysqlnd.ini,
/etc/php.d/mysqlnd_mysql.ini,
/etc/php.d/mysqlnd_mysqli.ini,
...
Configuration

bz2

BZip2 Support => Enabled
Stream Wrapper support => compress.bzip2://
Stream Filter support => bzip2.decompress, bzip2.compress
BZip2 Version => 1.0.6, 6-Sept-2010

calendar

Calendar support => enabled

Core

PHP Version => 5.4.45
...
Environment

Variable => Value
XDG_SESSION_ID => 558173
HOSTNAME => milinux
TERM => screen
SHELL => /bin/bash
HISTSIZE => 10000
SSH_CLIENT => 10.0.42.186 50360 22
...
PHP Variables

Variable => Value
_SERVER["XDG_SESSION_ID"] => 558173
_SERVER["HOSTNAME"] => milinux
_SERVER["TERM"] => screen
_SERVER["SHELL"] => /bin/bash
_SERVER["HISTSIZE"] => 10000
_SERVER["SSH_CLIENT"] => 10.0.42.186 50360 22
_SERVER["OLDPWD"] => /var/www/html/prueba
_SERVER["SSH_TTY"] => /dev/pts/1
_SERVER["USER"] => root
...

Límites de memoria

Para solucionar errores como:

Fatal error: Allowed memory size of xxxxxx bytes exhausted (tried to allocate XX bytes)

Podemos establecer el límite de memoria que puede usar un script mediante la función ini_set():

ini_set('memory_limit', '1024M')

Con la instrucción anterior, el script podrá usar hasta 1024 MB de memoria RAM.

Límite de tiempo de ejecución

ini_set('max_execution_time', 3600)

El script podrá estar en ejecución hasta 3600 segundos (1 hora).

Clases y bibliotecas

Biblioteca estándar de PHP (SPL)

La biblioteca estándar de PHP (Standard PHP library) proporciona un conjunto de estructuras de datos estándar, un conjunto de iteradores para recorrer objetos, un conjunto de interfaces, un conjunto de exceptiones estándar, varias clases para trabajar con archivos y un conjunto de funciones.

No es necesaria ninguna biblioteca externa para construir esta extensión. Está disponible y compilada de forma predeterminada desde PHP 5.

Frameworks PHP

Proyectos hechos con PHP

Recursos

informatica/programacion/php.txt · Última modificación: por tempwin