From 5c3249b12c94c44dce1cfb214872b2b1800f9bbd Mon Sep 17 00:00:00 2001 From: Christoph Date: Tue, 25 Apr 2023 01:58:35 +0200 Subject: [PATCH] mod_php_install.sh: add support for setting 'zlib.output_compression' and 'opcache.consistency_checks' at install time. Change some default values for 'opcache'. --- mod_php_install.sh | 166 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 147 insertions(+), 19 deletions(-) diff --git a/mod_php_install.sh b/mod_php_install.sh index 3c596e9..39cf545 100755 --- a/mod_php_install.sh +++ b/mod_php_install.sh @@ -35,14 +35,22 @@ _MAX_INPUT_TIME=180 _UPLOAD_MAX_FILESIZE="128M" _POST_MAX_SIZE="128M" +_ZLIB_OUTPUT_COMPRESSION="On" + # Default Settings opcache extension # DEFAULT_OPCACHE_ENABLE=1 DEFAULT_OPCACHE_ENABLE_CLI=1 -DEFAULT_OPCACHE_MEMORY_CONSUMPTION=128 +#DEFAULT_OPCACHE_MEMORY_CONSUMPTION=128 +DEFAULT_OPCACHE_MEMORY_CONSUMPTION=512 DEFAULT_OPCACHE_INTERNED_STRINGS_BUFFER=24 -DEFAULT_OPCACHE_MAX_ACCELERATED_FILES=10000 -DEFAULT_OPCACHE_VALIDATE_TIMESTAMPS=1 +#DEFAULT_OPCACHE_MAX_ACCELERATED_FILES=10000 +DEFAULT_OPCACHE_MAX_ACCELERATED_FILES=60000 +#DEFAULT_OPCACHE_VALIDATE_TIMESTAMPS=1 +DEFAULT_OPCACHE_VALIDATE_TIMESTAMPS=0 + +DEFAULT_OPCACHE_CONSISTENCY_CHECKS=0 + DEFAULT_OPCACHE_REVALIDATE_FREQ=60 if [[ -d "/var/log/apache2" ]] ; then DEFAULT_OPCACHE_ERROR_LOG="/var/log/apache2/opcache_errors.log" @@ -532,6 +540,37 @@ echo -e "\033[1mDefine base parameter for php.ini file\033[m" echo -e "\033[32m--\033[m" echo "" +## - php.ini: zlib.output_compression +if [ -f "/usr/local/php-${PHP_MAIN_VERSION}/etc/php.ini" ]; then + __zlib_output_compression=$(grep -e "^\s*zlib.output_compression" /usr/local/php-${PHP_MAIN_VERSION}/etc/php.ini | awk '{print$3}') + if [ -n "$__zlib_output_compression" ] ; then + _ZLIB_OUTPUT_COMPRESSION=$__zlib_output_compression + fi +fi + +ZLIB_OUTPUT_COMPRESSION= +while [[ "X$ZLIB_OUTPUT_COMPRESSION" = "X" ]]; do + echononl "zlib.output_compression - [$_ZLIB_OUTPUT_COMPRESSION]: " + read ZLIB_OUTPUT_COMPRESSION + if [ "X$ZLIB_OUTPUT_COMPRESSION" = "X" ]; then + ZLIB_OUTPUT_COMPRESSION=$_ZLIB_OUTPUT_COMPRESSION + fi + __read_val=${ZLIB_OUTPUT_COMPRESSION,,} + if [[ "$__read_val" != "on" ]] && [[ "$__read_val" != "off" ]]; then + warn "value for zlib.output_compression must be 'On' or 'Off'" + ZLIB_OUTPUT_COMPRESSION= + continue + fi +done +if [[ "$__read_val" = "on" ]] ; then + ZLIB_OUTPUT_COMPRESSION="On" +else + ZLIB_OUTPUT_COMPRESSION="Off" +fi + + + + ## - php.ini: memory_limit if [ -f "/usr/local/php-${PHP_MAIN_VERSION}/etc/php.ini" ]; then __memory_limit=$(grep -e "^\s*memory_limit" /usr/local/php-${PHP_MAIN_VERSION}/etc/php.ini | awk '{print$3}') @@ -540,13 +579,6 @@ if [ -f "/usr/local/php-${PHP_MAIN_VERSION}/etc/php.ini" ]; then fi fi -if [ -f "/usr/local/php-${PHP_MAIN_VERSION}/etc/php.ini" ]; then - __memory_limit=$(grep -e "^\s*memory_limit" /usr/local/php-${PHP_MAIN_VERSION}/etc/php.ini | awk '{print$3}') - if [ -n "$__memory_limit" ] ; then - __MEMORY_LIMIT=$__memory_limit - fi -fi - MEMORY_LIMIT="" while [[ "X$MEMORY_LIMIT" = "X" ]]; do echononl "memory_limit - Append unit \"K\", \"M\" or \"G\" [$_MEMORY_LIMIT]: " @@ -1186,11 +1218,62 @@ while [[ "X$OPCACHE_VALIDATE_TIMESTAMPS" = "X" ]]; do done -# - php.ini - opcache extension: opcache.validate_timestamps +# - php.ini - opcache extension: opcache.consistency_checks +_key="opcache.consistency_checks" +_default_val=$DEFAULT_OPCACHE_CONSISTENCY_CHECKS +if [ -f "/usr/local/php-${PHP_MAIN_VERSION}/etc/php.ini" ]; then + _OPCACHE_CONSISTENCY_CHECKS=$(grep -e "^\s*${_key}" /usr/local/php-${PHP_MAIN_VERSION}/etc/php.ini | awk '{print$3}') +fi +[[ -z "$_OPCACHE_CONSISTENCY_CHECKS" ]] && _OPCACHE_CONSISTENCY_CHECKS=$_default_val + +echo "" +echo "" +echo -e "Set value for Parameter \033[32m${_key}\033[m (bool)" +echo "" +echo " If enabled, OPcache will check for updated scripts every opcache.revalidate_freq seconds." +echo " When this directive is disabled, you must reset OPcache manually via opcache_reset()," +echo " opcache_invalidate() or by restarting the Web server for changes to the filesystem" +echo " to take effect." +echo "" +echo -e "\033[33mTo disable this OPcache check, set value to \033[1m0\033[m" +echo "" +OPCACHE_CONSISTENCY_CHECKS="" +while [[ "X$OPCACHE_CONSISTENCY_CHECKS" = "X" ]]; do + echononl "${_key} [$_OPCACHE_CONSISTENCY_CHECKS]: " + read OPCACHE_CONSISTENCY_CHECKS + if [ "X$OPCACHE_CONSISTENCY_CHECKS" = "X" ]; then + OPCACHE_CONSISTENCY_CHECKS=$_OPCACHE_CONSISTENCY_CHECKS + continue + fi + if [[ "${OPCACHE_CONSISTENCY_CHECKS}" != 0 ]] \ + && [[ "${OPCACHE_CONSISTENCY_CHECKS,,}" != "no" ]] \ + && [[ "${OPCACHE_CONSISTENCY_CHECKS,,}" != "false" ]] \ + && [[ "${OPCACHE_CONSISTENCY_CHECKS}" != 1 ]] \ + && [[ "${OPCACHE_CONSISTENCY_CHECKS,,}" != "yes" ]] \ + && [[ "${OPCACHE_CONSISTENCY_CHECKS,,}" != "true" ]] ; then + OPCACHE_CONSISTENCY_CHECKS="" + warn "Value for '${_key}' must be bool [1/0/true/false/yes/no]." + continue + fi + echo "" + echo "OPCACHE_CONSISTENCY_CHECKS: $OPCACHE_CONSISTENCY_CHECKS" + echo "OPCACHE_CONSISTENCY_CHECKS: ${OPCACHE_CONSISTENCY_CHECKS,,}" + echo "" + if [[ "${OPCACHE_CONSISTENCY_CHECKS,,}" = "no" ]] \ + || [[ "${OPCACHE_CONSISTENCY_CHECKS,,}" = "false" ]]; then + OPCACHE_CONSISTENCY_CHECKS=0 + elif [[ "${OPCACHE_CONSISTENCY_CHECKS,,}" = "yes" ]] \ + || [[ "${OPCACHE_CONSISTENCY_CHECKS,,}" = "true" ]]; then + OPCACHE_CONSISTENCY_CHECKS=1 + fi +done + + +# - php.ini - opcache extension: opcache.error_log _key="opcache.error_log" _default_val="${DEFAULT_OPCACHE_ERROR_LOG}" if [ -f "/usr/local/php-${PHP_MAIN_VERSION}/etc/php.ini" ]; then - _OPCACHE_VALIDATE_TIMESTAMPS=$(grep -e "^\s*${_key}" /usr/local/php-${PHP_MAIN_VERSION}/etc/php.ini | awk '{print$3}') + _OPCACHE_ERROR_LOG=$(grep -e "^\s*${_key}" /usr/local/php-${PHP_MAIN_VERSION}/etc/php.ini | awk '{print$3}') fi [[ -z "$_OPCACHE_ERROR_LOG" ]] && _OPCACHE_ERROR_LOG=$_default_val @@ -1659,6 +1742,7 @@ echo "PHP minor version....................: $PHP_MINOR_VERSION" echo "PHP patch level......................: $PHP_PATCH_LEVEL" echo "" echo "PHP base configuration (php.ini)" +echo " zlib.output_compression...........: $ZLIB_OUTPUT_COMPRESSION" echo " memory_limit......................: $MEMORY_LIMIT" echo " max_execution_time................: $MAX_EXECUTION_TIME" echo " max_input_time....................: $MAX_INPUT_TIME" @@ -1672,6 +1756,7 @@ echo " opcache.memory_consumption........: $OPCACHE_MEMORY_CONSUMPTION" echo " opcache.interned_strings_buffer...: $OPCACHE_INTERNED_STRINGS_BUFFER" echo " opcache.max_accelerated_files.....: $OPCACHE_MAX_ACCELERATED_FILES" echo " opcache.validate_timestamps.......: $OPCACHE_VALIDATE_TIMESTAMPS" +echo " opcache.consistency_checks........: $OPCACHE_CONSISTENCY_CHECKS" echo " opcache.revalidate_freq...........: $OPCACHE_REVALIDATE_FREQ" echo " opcache.error_log.................: $OPCACHE_ERROR_LOG" echo "" @@ -4782,13 +4867,18 @@ else # # extension=apcu.so # apc.enable_cli = 1 + # apc.shm_size = 128M + # apc.stat = 1 + # apcu.stat = 1 + # apc.cache_by_default = 1 + # apc.smart = 0 # echononl "\tphp.ini: extension=apcu .." _extension="apcu.so" echo "" >> ${_logdir}/pecl_install.log echo "# php.ini: extension=apcu .." >> ${_logdir}/pecl_install.log echo "perl -i -n -p -e \"s#^(\s*\[PHP\]\s*)#\1\nextension=${_extension}\napc.enable_cli = 1\n#\" $PHP_INI_FILE" >> ${_logdir}/pecl_install.log - perl -i -n -p -e "s#^(\s*\[PHP\]\s*)#\1\nextension=${_extension}\napc.enable_cli = 1\n#" $PHP_INI_FILE + perl -i -n -p -e "s#^(\s*\[PHP\]\s*)#\1\nextension=${_extension}\napc.enable_cli = 1\napc.shm_size = 128M\napc.stat = 1\napcu.stat = 1\napc.cache_by_default = 1\napc.smart = 0\n#" $PHP_INI_FILE if [ "$?" = "0" ]; then echo_ok else @@ -6678,6 +6768,26 @@ else fi +## - set zlib.output_compression = $ZLIB_OUTPUT_COMPRESSION +## - +echononl "\tphp.ini: zlib.output_compression = $ZLIB_OUTPUT_COMPRESSION" +_key="zlib.output_compression" +_val=$ZLIB_OUTPUT_COMPRESSION +if grep -e "^\s*${_key}\s*=" $PHP_INI_FILE > /dev/null 2>&1 ; then + perl -i -n -p -e "s#^(\s*${_key}\s*=.*)#;\1\n${_key} = ${_val}#" $PHP_INI_FILE + _retval=$? +elif grep -e "^\s*;\s*${_key}\s*=" $PHP_INI_FILE > /dev/null 2>&1 ; then + sed -i "0,/^\([ \t]*;[ \t]*${_key}[ \t]*=.*\)/ s##\1\n${_key} = \"${_val}\"\n#" $PHP_INI_FILE + #perl -i -n -p -e "s#^(\s*;\s*${_key}\s*=.*)#\1\n${_key} = ${_val}#" $PHP_INI_FILE + _retval=$? +fi +if [ "$_retval" = "0" ]; then + echo_ok +else + echo_failed +fi + + ## - set memory_limit = $MEMORY_LIMIT ## - echononl "\tphp.ini: memory_limit = $MEMORY_LIMIT" @@ -6947,7 +7057,7 @@ if [[ -n "$zend_extension_opcache" ]];then ## - set opcache.enable_cli=1 ## - - echononl "\tphp.ini: opcache.enable_cli = 1 .." + echononl "\tphp.ini: opcache.enable_cli = $OPCACHE_ENABLE_CLI .." opcache_key="opcache.enable_cli" opcache_val=$OPCACHE_ENABLE_CLI if grep -e "^\s*${opcache_key}\s*=" $PHP_INI_FILE > /dev/null 2>&1 ; then @@ -6965,7 +7075,7 @@ if [[ -n "$zend_extension_opcache" ]];then ## - set opcache.memory_consumption ## - - echononl "\tphp.ini: opcache.memory_consumption = 128 .." + echononl "\tphp.ini: opcache.memory_consumption = $OPCACHE_MEMORY_CONSUMPTION .." opcache_key="opcache.memory_consumption" opcache_val=$OPCACHE_MEMORY_CONSUMPTION if grep -e "^\s*${opcache_key}\s*=" $PHP_INI_FILE > /dev/null 2>&1 ; then @@ -6983,7 +7093,7 @@ if [[ -n "$zend_extension_opcache" ]];then ## - set opcache.interned_strings_buffer ## - - echononl "\tphp.ini: opcache.interned_strings_buffer = 16 .." + echononl "\tphp.ini: opcache.interned_strings_buffer = $OPCACHE_INTERNED_STRINGS_BUFFER .." opcache_key="opcache.interned_strings_buffer" opcache_val=$OPCACHE_INTERNED_STRINGS_BUFFER if grep -e "^\s*${opcache_key}\s*=" $PHP_INI_FILE > /dev/null 2>&1 ; then @@ -7001,7 +7111,7 @@ if [[ -n "$zend_extension_opcache" ]];then ## - set opcache.max_accelerated_files ## - - echononl "\tphp.ini: opcache.max_accelerated_files = 10000 .." + echononl "\tphp.ini: opcache.max_accelerated_files = $OPCACHE_MAX_ACCELERATED_FILES .." opcache_key="opcache.max_accelerated_files" opcache_val=$OPCACHE_MAX_ACCELERATED_FILES if grep -e "^\s*${opcache_key}\s*=" $PHP_INI_FILE > /dev/null 2>&1 ; then @@ -7019,7 +7129,7 @@ if [[ -n "$zend_extension_opcache" ]];then ## - set opcache.validate_timestamps ## - - echononl "\tphp.ini: opcache.validate_timestamps = 1 .." + echononl "\tphp.ini: opcache.validate_timestamps = $OPCACHE_VALIDATE_TIMESTAMPS .." opcache_key="opcache.validate_timestamps" opcache_val=$OPCACHE_VALIDATE_TIMESTAMPS if grep -e "^\s*${opcache_key}\s*=" $PHP_INI_FILE > /dev/null 2>&1 ; then @@ -7035,9 +7145,27 @@ if [[ -n "$zend_extension_opcache" ]];then echo_failed fi + ## - set opcache.consistency_checks + ## - + echononl "\tphp.ini: opcache.validate_timestamps = $OPCACHE_CONSISTENCY_CHECKS .." + opcache_key="opcache.consistency_checks" + opcache_val=$OPCACHE_CONSISTENCY_CHECKS + if grep -e "^\s*${opcache_key}\s*=" $PHP_INI_FILE > /dev/null 2>&1 ; then + perl -i -n -p -e "s#^(\s*${opcache_key}\s*=.*)#;\1\n*${opcache_key} = ${opcache_val}#" $PHP_INI_FILE + _retval=$? + elif grep -e "^\s*;\s*${opcache_key}\s*=" $PHP_INI_FILE > /dev/null 2>&1 ; then + perl -i -n -p -e "s#^(\s*;${opcache_key}\s*=.*)#\1\n${opcache_key} = ${opcache_val}#" $PHP_INI_FILE + _retval=$? + fi + if [ "$_retval" = "0" ]; then + echo_ok + else + echo_failed + fi + ## - set opcache.revalidate_freq ## - - echononl "\tphp.ini: opcache.revalidate_freq = 1 .." + echononl "\tphp.ini: opcache.revalidate_freq = $OPCACHE_REVALIDATE_FREQ .." opcache_key="opcache.revalidate_freq" opcache_val=$OPCACHE_REVALIDATE_FREQ if grep -e "^\s*${opcache_key}\s*=" $PHP_INI_FILE > /dev/null 2>&1 ; then