PHP (Español)

From ArchWiki
Esta traducción de PHP fue revisada el 2021-02-14. Si existen cambios puede actualizarla o avisar al equipo de traducción.

PHP es un lenguaje de secuencias de órdenes de uso general muy utilizado que es especialmente adecuado para el desarrollo web y puede integrarse en HTML.

Instalación

Instale el paquete php del repositorio oficial.

Puede encontrar versiones anteriores de PHP en AUR, tales como php53AUR[enlace roto: package not found], php55AUR, php56AUR, php70AUR, php71AUR, php72AUR, php73AUR y php74AUR.

Ejecución

Si bien PHP se puede ejecutar de forma independiente, generalmente se utiliza con servidores web. Eso requiere instalar paquetes adicionales y editar archivos de configuración. Para configuraciones comunes, véase Apache HTTP Server, nginx, lighttpd y Hiawatha. Para ejecutar scripts PHP como CGI simple, necesita el paquete php-cgi.

Configuración

El archivo principal de configuración de PHP está bien documentado y ubicado en /etc/php/php.ini.

date.timezone = Europe/Madrid
  • Si quiere mostrar los errores para depurar su código PHP, cambie display_errors a On en /etc/php/php.ini:
display_errors = On
  • La directiva open_basedir limita las rutas a las que puede acceder PHP, aumentando así la seguridad a costa de interferir potencialmente con la ejecución normal del programa. A partir de PHP 7.0, ya no está configurado de forma predeterminada para que coincida más estrechamente con el flujo ascendente, por lo que los usuarios que deseen usarlo deben configurarlo manualmente. Todos los enlaces simbólicos están resueltos, por lo que no es posible evitar esta restricción con un enlace simbólico. Los paquetes Arch predeterminados para ciertas aplicaciones web como nextcloud y phpmyadmin instalan las aplicaciones web en /usr/share/webapps y crean un enlace simbólico que apunta a los archivos de configuración reales para dichas aplicaciones web en /etc/webapps. Por lo tanto, si está configurando open_basedir, asegúrese de que ambas carpetas estén en open_basedir. Obviamente, esto será diferente para las aplicaciones web instaladas en otras ubicaciones. Por ejemplo:
open_basedir = /srv/http/:/var/www/:/home/:/tmp/:/var/tmp/:/var/cache/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/

Extensiones

También se pueden encontrar varias extensiones PHP de uso común en los repositorios oficiales:

$ pacman -Ss php-
Sugerencia: En lugar de editar /etc/php/php.ini, se puede activar/configurar una extensión en el directorio /etc/php/conf.d (por ejemplo /etc/php/conf.d/gd.ini).

Las extensiones para versiones actuales y anteriores de PHP también están disponibles en AUR con el prefijo php-* y php56-*, por ejemplo php-imagick, php-redis y php56-mcryptAUR.

gd

Para php-gd descomente en /etc/php/php.ini la línea:

extension=gd

Imagemagick

Instale) el paquete imagemagick y una de las bibliotecas de extensión PHP enumeradas.

Instale php-imagick, creará el archivo /etc/php/conf.d/imagick.ini para configurar la extensión.

PECL

Asegúrese de que se haya instalado el paquete php-pearAUR:

# pecl install imagick

Cree /etc/php/conf.d/imagick.ini y active la extensión:

/etc/php/conf.d/imagick.ini
extension=imagick

Multihilo

Si desea tener POSIX multihilo, necesitará la extensión paralelo. Para instalar la extensión usando pecl, se requiere que use una versión compilada de PHP con la opción de soporte de seguridad de subprocesos --enable-maintenance-zts. Actualmente, la forma más limpia de hacer esto sería reconstruir el paquete original con la opción. Las instrucciones se pueden encontrar en la página PHP pthreads extension.

PCNTL

PCNTL le permite crear procesos directamente en la máquina del lado del servidor. Si bien esto puede verse como algo que desearía, también le da a PHP el poder de estropear las cosas realmente. Por lo tanto, es una extensión de PHP que no se puede cargar como otra extensión más conveniente. Esto se debe al gran poder que le da a PHP. Para activarlo, PCNTL debe estar compilado en PHP.

El paquete php en Arch Linux está actualmente construido con "--enable-pcntl", por lo que debería estar disponible por defecto.

MySQL/MariaDB

Instale y configure MySQL/MariaDB como se describe en MariaDB.

Descomente las líneas siguientes en /etc/php/php.ini:

extension=pdo_mysql
extension=mysqli
Nota: extension=mysql fue eliminado en PHP 7.0.

Puede añadir usuarios menores de MySQL con privilegios para sus scripts web. Es posible que también quiera editar /etc/my.cnf.d/server.cnf y añadir la línea de la sección mysqld skip-networking para que solo se pueda acceder al servidor MySQL por localhost, según MariaDB#Enable access locally only via Unix sockets. Debe reiniciar MySQL para que los cambios surtan efecto.

Redis

Instale y configure Redis, luego instale php-redis.

Descomente la línea del paquete, por ejemplo /etc/php/conf.d/redis.ini. También asegúrese de que la extensión igbinary esté activada (también descomentada) en /etc/php/conf.d/igbinary.ini

PostgreSQL

Instale y configure PostgreSQL, luego instale el paquete php-pgsql y descomente las siguientes líneas en /etc/php/php.ini:

extension=pdo_pgsql
extension=pgsql

Sqlite

Instale y configure SQLite, luego instale el paquete php-sqlite y descomente las siguientes líneas en /etc/php/php.ini:

extension=pdo_sqlite
extension=sqlite3

XDebug

XDebug le permite depurar fácilmente el código php usando la función var_dump() modificada. Instale xdebug y descomente las líneas en /etc/php/conf.d/xdebug.ini.

zend_extension=xdebug
xdebug.mode=debug
Nota: Para intentar siempre iniciar una sesión de depuración remota y conectarse a un cliente de depuración, también es necesario configurar xdebug.remote_autostart=on. Para Xdebug 3, el puerto predeterminado es 9003, para cambiarlo configure xdebug.remote_port=9000

IMAP

Instale php-imapAUR y descomente en /etc/php/php.ini la línea:

extension=imap

Caching

Hay dos tipos de almacenamiento en caché en PHP: caché de código de operación/código de bytes (opcode) y caché de área de usuario/datos de usuario (userland). Ambos permiten ganancias sustanciales en la velocidad de las aplicaciones y, por lo tanto, deben activarse siempre que sea posible.

  • Zend OPCache proporciona solo caché de código de operación.
  • APCu proporciona solo caché de área de usuario.

OPCache

OPCache viene incluido con la distribución PHP estándar, por lo tanto, para activarlo simplemente tiene que añadir o descomentar la siguiente línea en su archivo de configuración PHP:

/etc/php/php.ini
zend_extension=opcache

Puede encontrar una lista de sus opciones y configuraciones sugeridas en el sitio web de PHP.

Advertencia: Si opta por aplicar la configuración sugerida que ofrece el manual, asegúrese de leer con atención el primer comentario debajo de esas instrucciones también. En algunos casos, esas configuraciones dan como resultado errores como zend_mm_heap corrupted.

APCu

APCu se puede instalar con el paquete php-apcu. Luego puede activarlo descomentando la siguiente línea en /etc/php/conf.d/apcu.ini, o añadiéndola a su archivo de configuración PHP:

extension=apcu

This article or section is out of date.

Reason: The linked INSTALL file was removed and instead points to the online documentation (Discuss in Talk:PHP (Español))

Su autor recomienda algunas configuraciones sugeridas, entre las cuales:

Sugerencia: Puede añadir esas configuraciones al propio /etc/php/conf.d/apcu.ini de APCu o directamente a su archivo de configuración de PHP. Solo asegúrese de no activar la extensión dos veces, ya que provocará errores en los registros del sistema.

Herramientas de desarrollo

  • Visual Studio Code — Editor de código para programar PHP y otros lenguajes.
https://code.visualstudio.com/ || visual-studio-code-binAUR
  • Aptana Studio — IDE para programación en PHP y desarrollo web. No tiene depurador de PHP.
http://www.aptana.com/products/studio3.html || aptana-studioAUR
  • Eclipse PDT — La variante PHP de Eclipse.
https://www.eclipse.org/pdt/ || eclipse-phpAUR
  • Komodo — IDE con buena integración para PHP+HTML+JavaScript.
http://komodoide.com/ || komodo-ideAUR, editor only: komodo-editAUR
  • Netbeans — IDE para muchos lenguajes, incluido PHP. Incluye funciones como depuración, refactorización, creación de plantillas de código, autocompletar, funciones XML y funciones de desarrollo y diseño web.
https://netbeans.org/ || netbeans
  • JetBrains PhpStorm — IDE comercial multiplataforma para PHP construido sobre la plataforma IntelliJ IDEA de JetBrains. Puede obtener una licencia gratuita de Jetbrains para estudiantes.[1].
https://www.jetbrains.com/phpstorm/ || phpstormAUR, 30-day trial: phpstorm-eapAUR
  • Zend Studio — IDE PHP oficial, basado en eclipse. El IDE tiene autocompletado, formato de código avanzado, editor de html WYSIWYG, refactorización y todas las funciones de eclipse, como el acceso a la base de datos y la integración de control de versiones y todo lo que pueda obtener de otros complementos de eclipse.
https://www.zend.com/products/studio/ || zendstudioAUR[enlace roto: package not found]

Herramientas de línea de órdenes

Compositor

Composer es un administrador de dependencias para PHP. Se puede instalar con el paquete composer.

Permitir instalaciones a nivel de usuario

Para permitir instalaciones de paquetes globales para el usuario actual (por ejemplo $ composer global require "package/name"), es posible que quiera especificar una ubicación predeterminada mediante una variable de entorno:

PATH="$HOME/.config/composer/vendor/bin:$PATH"

Box

Box es una aplicación para construir y administrar Phars. Se puede instalar con el paquete php-boxAUR.

PDepend

PHP Depend (pdepend) es una herramienta de métricas software para php. Se puede instalar con el paquete pdependAUR.

PHP Coding Standards Fixer

PHP Coding Standards Fixer es un corrector de código del estándar de codificación PSR-1 y PSR-2. Se puede instalar con el paquete php-cs-fixerAUR.

PHP-CodeSniffer

PHP CodeSniffer "tokeniza" archivos PHP, JavaScript y CSS y detecta violaciones de un conjunto definido de estándares de codificación. Se puede instalar con el paquete php-codesnifferAUR.

phpcov

phpcov es una interfaz de línea de órdenes para la biblioteca PHP_CodeCoverage. Se puede instalar con el paquete phpcovAUR.

phpDox

phpDox es el generador de documentación para proyectos PHP. Esto incluye, pero no se limita a, la documentación de la API. Se puede instalar con el paquete phpdoxAUR.

PHPLoc

PHPLoc es una herramienta para medir rápidamente el tamaño de un proyecto PHP. Se puede instalar con el paquete phplocAUR.

PhpMetrics

PhpMetrics proporciona varias métricas sobre proyectos PHP. Se puede instalar con el paquete phpmetricsAUR.

phptok

phptok es una herramienta para descargar rápidamente los "tokens" de un archivo de código fuente PHP. Se puede instalar con el paquete phptokAUR.

PHPUnit

PHPUnit es un marco de pruebas para PHP orientado a programadores. Se puede instalar con el paquete phpunitAUR.

PHPUnit Skeleton Generator

PHPUnit Skeleton Generator es una herramienta que puede generar estructuras de clases de prueba a partir de clases de código de producción y viceversa. Se puede instalar con el paquete phpunit-skeleton-generatorAUR[enlace roto: package not found].

Producer

Producer es una herramienta de control de calidad de línea de órdenes para validar y luego publicar su paquete de biblioteca PHP. Se puede instalar con el paquete producerAUR.

Solución de problemas

PHP Fatal error: Class 'ZipArchive' not found

Asegúrese de que la extensión zip esté activada.

/etc/php/php.ini
extension=zip

/etc/php/php.ini not parsed

Si su php.ini no se analiza, el archivo ini recibe el nombre del sapi que está utilizando. Por ejemplo, si está utilizando uwsgi, el archivo se llamaría /etc/php/php-uwsgi.ini. Si está usando cli, es /etc/php/php-cli.ini.

PHP Warning: PHP Startup: <module>: Unable to initialize module

Cuando se ejecuta php, este error indica que el módulo mencionado anteriormente está desactualizado. Esto rara vez sucederá en Arch Linux, ya que los encargados del mantenimiento se aseguran de que el núcleo PHP y todos los módulos solo estén disponibles en versiones compatibles.

Esto puede suceder junto con un módulo compilado de AUR. Por lo general, puede confirmar esto mirando las fechas de los archivos /usr/lib/php/modules/.

Para solucionarlo, busque una actualización compatible para su módulo, probablemente buscando en AUR usando su nombre común.

Si corresponde, marque el paquete AUR desactualizado como outdated (desactualizado).

Véase también