#!/bin/sh # keepPhpUp exposure probe — read-only. Run as the web user on the server (or inside the container) # and send back the output. It changes nothing. echo "== keepPhpUp exposure probe $(date -u +%FT%TZ) ==" echo "-- host"; uname -a 2>/dev/null; cat /etc/os-release 2>/dev/null | head -3 echo "-- php binaries"; for p in php php7.4 php8.0 php8.1 php8.2 php8.3 php8.4 php8.5; do command -v $p >/dev/null 2>&1 && printf '%-8s ' "$p" && $p -r 'echo PHP_VERSION, " sapi=", PHP_SAPI, PHP_EOL;'; done echo "-- fpm"; for f in php-fpm php-fpm7.4 php-fpm8.0 php-fpm8.1 php-fpm8.2 php-fpm8.3 php-fpm8.4 php-fpm8.5; do command -v $f >/dev/null 2>&1 && printf '%-12s ' "$f" && $f -v 2>/dev/null | head -1; done echo "-- apache mod_php?"; (apache2ctl -M 2>/dev/null || httpd -M 2>/dev/null) | grep -i php || echo "no mod_php module listed (or apache not present)" echo "-- web server processes"; ps -eo comm 2>/dev/null | grep -Ei '^(nginx|apache2|httpd|litespeed|lsphp|frankenphp|php-fpm|caddy)' | sort | uniq -c echo "-- ini (CLI view; FPM/Apache may differ, see phpinfo)" php -r ' foreach (["session.upload_progress.enabled","memory_limit","post_max_size","upload_max_filesize","fatal_error_backtraces","expose_php"] as $k) { $v = ini_get($k); printf("%-34s %s\n", $k, $v === false ? "(not set)" : ($v === "" ? "(empty)" : $v)); } printf("%-34s %s\n", "loaded php.ini", php_ini_loaded_file() ?: "(none)"); printf("%-34s %s\n", "configure command", php_sapi_name() === "cli" ? "(run php -i | grep \"Configure Command\")" : ""); ' 2>/dev/null echo "-- installed php packages (debian/ubuntu)"; dpkg -l 'php*' 2>/dev/null | awk '/^ii/ {print $2, $3}' | head -40 echo "-- candidate updates (debian/ubuntu)"; for v in 7.4 8.0 8.1 8.2 8.3 8.4 8.5; do apt-cache policy php$v-fpm 2>/dev/null | grep -E 'Installed|Candidate' | sed "s/^/php$v-fpm /"; done echo "-- rpm (rhel family)"; rpm -qa 'php*' 2>/dev/null | head -20 echo "== end =="