PHP (Español)
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[enlace roto: package not found], php56AUR, php70AUR[enlace roto: package not found], php71AUR[enlace roto: package not found], php72AUR[enlace roto: package not found], php73AUR[enlace roto: package not found] 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
.
- Se recomienda configurar su zona horaria (lista de zonas horarias) en
/etc/php/php.ini
así:
date.timezone = Europe/Madrid
- Si quiere mostrar los errores para depurar su código PHP, cambie
display_errors
aOn
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
yphpmyadmin
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á configurandoopen_basedir
, asegúrese de que ambas carpetas estén enopen_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-
/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
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
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.
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
Su autor recomienda algunas configuraciones sugeridas, entre las cuales:
-
apc.enabled=1
yapc.shm_size=32M
no son realmente necesarios ya que representan los valores por defecto; -
apc.ttl=7200
por otro lado parece bastante beneficiosa; - finalmente,
apc.enable_cli=1
, que aunque no es recomendada por el manual puede ser requerido por algún software como ownCloud.
/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.
- Aptana Studio — IDE para programación en PHP y desarrollo web. No tiene depurador de PHP.
- Eclipse PDT — La variante PHP de Eclipse.
- https://www.eclipse.org/pdt/ || eclipse-phpAUR[enlace roto: package not found]
- 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.
- 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[enlace roto: package not found].
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).