Título AH01071: Got error ‘Primary script unknown’ [SOLUCIONADO]

Resolviendo el Error de Script Desconocido en Servidores Linux

Si eres un desarrollador web o administrador de sistemas que trabaja con servidores Linux, es probable que te hayas encontrado con el mensaje de error “Primary script unknown” al trabajar con aplicaciones basadas en PHP. Este error es informado frecuentemente por el servidor web Apache o Nginx al usar PHP-FPM y suele ser un claro indicativo de problemas relacionados con la configuración del servidor o la ubicación de los archivos de scripts.

¿Qué Significa el Error y Cómo se Manifiesta?

Este mensaje de error puede manifestarse en diferentes situaciones, como tras una actualización del servidor, cambios en la configuración o la migración de aplicaciones web. Representa un fallo en la comunicación entre el servidor web y el gestor de procesos de PHP (PHP-FPM), donde el servidor está intentando ejecutar un script no identificado o inaccesible.

Posibles Causas del Problema

Los motivos más comunes que pueden generar este error incluyen:

  • Inadecuada configuración de los bloques de servidor o virtual hosts.
  • Errores en las rutas de los scripts en la configuración.
  • Permisos incorrectos en los directorios o archivos.
  • Configuraciones obsoletas o equivocadas de PHP-FPM tras una actualización.

Logrando la Corrección de la Configuración del Servidor

Revisar la configuración del servidor es crucial. Esto incluye verificar las rutas de los scripts, parámetros de PHP-FPM y los permisos de los archivos y directorios relacionados. A continuación, se detallan los pasos para resolver el problema según el mensaje de error “Primary script unknown”.

Verificando Rutas y Permisos

Frecuentemente, el problema puede ser causado por una ruta incorrecta del script que se está intentando ejecutar o permisos de archivos que no permiten al servidor leer o ejecutar los archivos necesarios. Comprueba que la ruta que estás utilizando para el script en la configuración de tu sitio es la correcta y que los permisos permiten la lectura y ejecución por parte del usuario del servidor web (generalmente www-data en Ubuntu/Debian o apache en CentOS/Red Hat).

<Directory /var/www/html/mi-aplicacion>
    AllowOverride None
    Order Deny,Allow
    Deny from all
    <FilesMatch "\.php$">
        SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
    </FilesMatch>
    </Directory>

Revisión de la Configuración del Servidor Web

En el caso de Apache, asegúrate de que el módulo proxy_fcgi esté habilitado y que la configuración SetHandler apunte correctamente al socket de PHP-FPM. Para Nginx, las directivas `fastcgi_pass` deben coincidir con la configuración de PHP-FPM.

Veamos un ejemplo de configuración para Nginx que podría causar este error si las rutas no están bien especificadas:

server {
    listen 80;
    server_name mi-aplicacion.com;
    root /var/www/html/mi-aplicacion;
    
    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }
}

Revisión de Configuración de PHP-FPM

Asegúrate de que el archivo www.conf (o un archivo de configuración específico para tu sitio) en PHP-FPM esté configurado correctamente y que la ruta del socket o del puerto TCP que estés utilizando esté correctamente referenciada en la configuración de tu servidor web.

Aquí un fragmento donde se define el socket en www.conf para PHP-FPM:

; Escucha en un socket UNIX
listen = /run/php/php7.4-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

Análisis y Corrección de Logs y Mensajes de Error

Las bitácoras de error proporcionan información crítica para resolver el problema. Revisa los archivos de log de PHP-FPM (error.log) y del servidor web para encontrar pistas adicionales. Los archivos de log pueden encontrarse en ubicaciones como /var/log/nginx/error.log o /var/log/apache2/error.log. Busca entradas que contengan el código de error específico o referencias a scripts PHP.

Actualización y Mantenimiento

En ocasiones, actualizaciones recientes del servidor web o del módulo PHP-FPM podrían cambiar la forma en la que los servicios deben configurarse o haber introducido cambios incompatibles. Asegúrate de haber revisado las notas de la versión y documentación correspondiente para aplicar cualquier ajuste necesario en la configuración.

Comprobaciones Posteriores

Una vez aplicadas las modificaciones pertinentes, es fundamental reiniciar los servicios afectados y realizar pruebas para asegurar que el error ha sido resuelto. Comandos como sudo systemctl restart apache2 o sudo systemctl restart nginx y sudo systemctl restart php7.4-fpm serán necesarios.

sudo systemctl restart apache2
sudo systemctl restart nginx
sudo systemctl restart php7.4-fpm

Consejos Finales para la Prevención de Errores

Mantener la consistencia entre las actualizaciones y los cambios de configuración ayudará a minimizar la aparición de este tipo de errores. Documentar los cambios y mantener un control de versiones de las configuraciones puede ser de gran ayuda para diagnosticar problemas cuando surgen. Utilizar herramientas de gestión de configuración como Ansible, Puppet o Chef puede facilitar el proceso y proveer un nivel extra de seguridad a través de la automatización de tareas repetitivas y la gestión de estados deseados.

Recursos Adicionales y Comunidad

Las comunidades de desarrolladores y administradores de sistemas son un recurso invalorable. Sitios como Stack Overflow, foros especializados y grupos de usuarios ofrecen un vasto conocimiento colectivo y es probable que alguien ya haya resuelto un problema similar al tuyo. Nunca subestimes el poder de una búsqueda bien ejecutada en tu motor preferido.

Resumen y Próximos Pasos

El error “Primary script unknown” usualmente apunta a problemas de configuración que pueden ser medulosos pero no son insuperables. La clave está en seguir un enfoque metódico, revisar toda la pila tecnológica involucrada y testear rigurosamente las soluciones implementadas. Los sitios web de documentación oficial de tu servidor web, PHP y sistemas operativos relacionados son también excelentes puntos de partida.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad