5959
6060# 5. Modules (with standard Lambda LD_LIBRARY_PATH)
6161LAMBDA_LD_PATH=" /opt/lib:/lib64:/usr/lib64"
62- MODULES=$( docker run --rm --platform " $PLATFORM " -e LD_LIBRARY_PATH=" $LAMBDA_LD_PATH " --entrypoint /opt/ymir/bin/php " $IMAGE " -m 2> /dev/null)
62+ # Capture both stdout and stderr to detect startup warnings
63+ MODULE_OUTPUT=$( docker run --rm --platform " $PLATFORM " -e LD_LIBRARY_PATH=" $LAMBDA_LD_PATH " --entrypoint /opt/ymir/bin/php " $IMAGE " -m 2>&1 )
64+ MODULES=$( echo " $MODULE_OUTPUT " | grep -v " PHP Warning" | grep -v " Failed loading" || true)
65+ STARTUP_ERRORS=$( echo " $MODULE_OUTPUT " | grep -E " PHP Warning|Failed loading|Unable to load" || true)
66+
67+ if [ -n " $STARTUP_ERRORS " ]; then
68+ echo " [FAIL] PHP Startup Errors detected:"
69+ echo " --------------------------------------------------------------------------------"
70+ echo " $STARTUP_ERRORS "
71+ echo " --------------------------------------------------------------------------------"
72+ FAILED=1
73+ fi
74+
6375PHP_VER=$( docker run --rm --platform " $PLATFORM " -e LD_LIBRARY_PATH=" $LAMBDA_LD_PATH " --entrypoint /opt/ymir/bin/php " $IMAGE " -r " echo PHP_VERSION_ID;" 2> /dev/null)
6476
6577REQUIRED=(" apcu" " igbinary" " zstd" " imagick" " intl" " pdo_mysql" )
@@ -72,13 +84,43 @@ REQUIRED+=("Zend OPcache")
7284
7385for mod in " ${REQUIRED[@]} " ; do
7486 if echo " $MODULES " | grep -qi " $mod " ; then
75- echo " [OK] $mod "
87+ echo " [OK] Module loaded: $mod "
7688 else
77- echo " [FAIL] $mod missing! "
89+ echo " [FAIL] Module missing: $mod "
7890 FAILED=1
7991 fi
8092done
8193
94+ # 5.5 Extension File Verification
95+ echo " [INFO] Verifying extension paths..."
96+ EXT_DIR=$( docker run --rm --platform " $PLATFORM " -e LD_LIBRARY_PATH=" $LAMBDA_LD_PATH " --entrypoint /opt/ymir/bin/php " $IMAGE " -r " echo ini_get('extension_dir');" 2> /dev/null)
97+ if [ -z " $EXT_DIR " ]; then
98+ echo " [FAIL] Could not determine extension_dir"
99+ FAILED=1
100+ else
101+ if docker run --rm --platform " $PLATFORM " --entrypoint /bin/sh " $IMAGE " -c " [ -d $EXT_DIR ]" ; then
102+ echo " [OK] Extension directory exists: $EXT_DIR "
103+ for ext in " pdo_mysql.so" ; do
104+ if docker run --rm --platform " $PLATFORM " --entrypoint /bin/sh " $IMAGE " -c " [ -f $EXT_DIR /$ext ]" ; then
105+ echo " [OK] Extension file exists: $ext "
106+ else
107+ echo " [FAIL] Extension file missing: $EXT_DIR /$ext "
108+ FAILED=1
109+ fi
110+ done
111+ # Opcache can be built-in or shared
112+ if ! docker run --rm --platform " $PLATFORM " -e LD_LIBRARY_PATH=" $LAMBDA_LD_PATH " --entrypoint /opt/ymir/bin/php " $IMAGE " -m | grep -qi " Zend OPcache" ; then
113+ if ! docker run --rm --platform " $PLATFORM " --entrypoint /bin/sh " $IMAGE " -c " [ -f $EXT_DIR /opcache.so ]" ; then
114+ echo " [FAIL] Zend OPcache missing (not in php -m and no opcache.so found)"
115+ FAILED=1
116+ fi
117+ fi
118+ else
119+ echo " [FAIL] Extension directory missing: $EXT_DIR "
120+ FAILED=1
121+ fi
122+ fi
123+
82124# 6. Relay Configuration
83125if [ -n " $PHP_VER " ] && [ " $PHP_VER " -ge 70400 ]; then
84126 EVICTION_POLICY=$( docker run --rm --platform " $PLATFORM " -e LD_LIBRARY_PATH=" $LAMBDA_LD_PATH " --entrypoint /opt/ymir/bin/php " $IMAGE " -r " echo ini_get('relay.eviction_policy');" 2> /dev/null)
@@ -90,13 +132,23 @@ if [ -n "$PHP_VER" ] && [ "$PHP_VER" -ge 70400 ]; then
90132 fi
91133fi
92134
93- # 7. Warnings
94- WARNINGS=$( docker run --rm --platform " $PLATFORM " --entrypoint /opt/ymir/bin/php " $IMAGE " -v 2>&1 > /dev/null || true)
95- if [ -n " $WARNINGS " ]; then
96- echo " [FAIL] Warnings: $WARNINGS "
135+ # 7. Warnings (Comprehensive check)
136+ # Check multiple commands to ensure no hidden startup warnings
137+ PHP_COMMANDS=(" -v" " -i" " -m" )
138+ ANY_WARNINGS=" "
139+ for cmd in " ${PHP_COMMANDS[@]} " ; do
140+ CMD_WARNINGS=$( docker run --rm --platform " $PLATFORM " --entrypoint /opt/ymir/bin/php " $IMAGE " $cmd 2>&1 > /dev/null | grep -E " Warning|Error|failed" || true)
141+ if [ -n " $CMD_WARNINGS " ]; then
142+ ANY_WARNINGS=" ${ANY_WARNINGS} \nCommand 'php $cmd ':\n$CMD_WARNINGS "
143+ fi
144+ done
145+
146+ if [ -n " $ANY_WARNINGS " ]; then
147+ echo " [FAIL] PHP Startup Warnings/Errors detected:"
148+ echo -e " $ANY_WARNINGS "
97149 FAILED=1
98150else
99- echo " [OK] No warnings"
151+ echo " [OK] No PHP startup warnings"
100152fi
101153
102154# 8. PHP-FPM
0 commit comments