Skip to content

Instantly share code, notes, and snippets.

@angelbladex
Last active September 3, 2025 19:50
Show Gist options
  • Save angelbladex/a093361c7ead7d75800b39703893e203 to your computer and use it in GitHub Desktop.
Save angelbladex/a093361c7ead7d75800b39703893e203 to your computer and use it in GitHub Desktop.
A Docker container for check compatibility with PHP 5.3 to 8.1

tree -L 2 .

├── script.sh

├── yourCode

│   └── System

└── Dockerfile

# Usa la imagen base de PHP que necesites
FROM php:8.4-cli
# Instala git y unzip, necesarios para Composer
RUN apt-get update && apt-get install -y git unzip
# Instala Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Instala PHPCS y el estándar PHPCompatibility con versiones recientes
RUN composer global require "squizlabs/php_codesniffer=*" "wimg/php-compatibility=*"
# Crea un enlace simbólico para que el comando 'phpcs' sea accesible
RUN ln -s /root/.composer/vendor/bin/phpcs /usr/local/bin/phpcs
# Configura el estándar PHPCompatibility para que sea accesible
RUN phpcs --config-set installed_paths /root/.composer/vendor/wimg/php-compatibility
# Define un punto de entrada para el contenedor
ENTRYPOINT ["phpcs"]
Define la versión de PHP contra la que quieres probar la compatibilidad
TEST_VERSION="5.3-8.4"
# Define la ruta de la imagen Docker de PHPCS
DOCKER_IMAGE="my_app"
# Define el directorio base de tu código dentro del contenedor
CODE_DIR="/app/yourCode/System"
# Define el archivo de salida para el informe
REPORT_FILE="compatibilidad_reporte.txt"
# Borra el archivo de reporte anterior si existe
> $REPORT_FILE
echo "Iniciando análisis de compatibilidad para la versión de PHP ${TEST_VERSION}..."
echo "Los resultados se guardarán en ${REPORT_FILE}"
echo "----------------------------------------------------" >> $REPORT_FILE
# Usa find para buscar todos los archivos .php en el directorio especificado
find .yourCode/System -name "*.php" | while read -r file; do
# Muestra el archivo que se está analizando
echo "Analizando ${file}..."
# Construye la ruta del archivo dentro del contenedor
# La ruta local "./codigo/..." se convierte en "/app/codigo/..."
container_file="/app/${file}"
# Ejecuta el comando Docker para analizar el archivo
# La salida de error y stdout se redirigen a un archivo
echo ">>> ${file} <<<" >> $REPORT_FILE
docker run --rm -v "$(pwd):/app" ${DOCKER_IMAGE} --standard=PHPCompatibility --runtime-set testVersion ${TEST_VERSION} ${container_file} >> $REPORT_FILE
# Agrega una línea en blanco para mejorar la legibilidad del informe
echo "" >> $REPORT_FILE
done
echo "Análisis completado. Revisa el archivo ${REPORT_FILE} para ver los resultados."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment