note 111451 added to session.configuration
| From: | jlevene at etisoftware dot com | Date: | Thu, 21 Feb 2013 01:29:36 +0000 |
| Subject: | note 111451 added to session.configuration | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-193708@lists.php.net to get a copy of this message | ||
Being unable to find an actual copy of mod_files.sh, and seeing lots of complaints/bug fix requests
for it, here's one that works. It gets all its parameters from PHP.INI, so you don't have
the opportunity to mess up:
#!/bin/bash
#
# Creates directories for PHP session storage.
# Replaces the one that "comes with" PHP, which (a) doesn't always come with it
# and (b) doesn't work so great.
#
# This version takes no parameters, and uses the values in PHP.INI (if it
# can find it).
#
# Works in OS-X and CentOS (and probably all other) Linux.
#
# Feb '13 by Jeff Levene.
[[ $# -gt 0 ]] && echo "$0 requires NO command-line parameters.
It gets does whatever is called for in the PHP.INI file (if it can find it).
" && exit 1
# Find the PHP.INI file, if possible:
phpIni=/usr/local/lib/php.ini # Default PHP.INI location
[[ ! -f "$phpIni" ]] && phpIni=/etc/php.ini # Secondary location
[[ ! -f "$phpIni" ]] && phpIni= # Found it?
# Outputs the given (as $1) parameter from the PHP.INI file:
# The "empty" brackets have a SPACE and a TAB in them.
#
PhpConfigParam() {
[[ ! "$phpIni" ]] && return
# Get the line from the INI file:
varLine=
grep "^[ ]*$1[ ]*=" "$phpIni"
# Extract the value:
value=expr "$varLine" : ".*$1[ ]*=[
]*['\"]*\([^'\"]*\)"
echo "$value"
}
if [[ "$phpIni" ]]
then
savePath=PhpConfigParam session.save_path
# If there's a number and semicolon at the front, remove them:
dirDepth=expr "$savePath" : '\([0-9]*\)'
[[ "$dirDepth" ]] && savePath=expr "$savePath" :
'[0-9]*;\(.*\)' || dirDepth=0
bits=PhpConfigParam session.hash_bits_per_character
case "x$bits" in
x) echo "hash_bits_per_character not defined. Not running." ; exit 2 ;;
x4) alphabet='0 1 2 3 4 5 6 7 8 9 a b c d e f' ;;
x5) alphabet='0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v' ;;
x6) alphabet='0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v'
alphabet="$alphabet w x y z A B C D E F G H I J K L M N O P Q R S T U V W"
alphabet="$alphabet X Y Z - ,"
;;
*) echo "unrecognized hash_bits_per_character. Not running." ; exit 2 ;;
esac
else
echo "Cannot find the PHP.INI file. Not running. Sorry."
exit 2
fi
# The depth of directories to create is $1. 0 means just create the named
# directory. Directory to start with is $2.
#
# Used recursively, so variables must be "local".
doDir() {
local dir="$2"
if [[ -d "$dir" ]]
then
echo "Directory '$dir' already exists. No problem."
elif [[ -f "$dir" ]]
then
echo "FILE '$dir' exists. Aborting." ; exit 2
else
if mkdir "$dir"
then
echo "Directory '$dir' created."
else
echo "Cannot create directory '$dir'. Aborting." ; exit 2
fi
fi
chmod a+rwx "$dir"
if [[ $1 -gt 0 ]]
then
local depth=$(( $1 - 1 ))
for letter in $alphabet
do doDir $depth "$dir/$letter"
done
fi
}
echo "Running with savePath='$savePath', dirDepth=$dirDepth, and
bitsPerCharacter=$bits."
sleep 3
doDir $dirDepth "$savePath"
exit 0
----
Server IP: 69.147.83.199
Probable Submitter: 108.222.50.227
----
Manual Page -- http://php.net/manual/en/session.configuration.php
Edit -- https://master.php.net/note/edit/111451
Del: integrated -- https://master.php.net/note/delete/111451/integrated
Del: useless -- https://master.php.net/note/delete/111451/useless
Del: bad code -- https://master.php.net/note/delete/111451/bad+code
Del: spam -- https://master.php.net/note/delete/111451/spam
Del: non-english -- https://master.php.net/note/delete/111451/non-english
Del: in docs -- https://master.php.net/note/delete/111451/in+docs
Del: other reasons-- https://master.php.net/note/delete/111451
Reject -- https://master.php.net/note/reject/111451
Search -- https://master.php.net/manage/user-notes.php