Today when PHP calls the session prompt fatal Error:session_start (): Failed to initialize storage module:files (session.inc.php on line 83) wrong , let me share with you how this problem is handled.
Original solution: Fatal Error:session_start (): Failed to initialize storage module:files problem
Before compiling the installed version of the LNMP environment +phpmyamdin4.02, this problem suddenly occurs today:
Fatal Error:session_start (): Failed to initialize Storage module:files (path:) In/data/www/phpmyadmin/libraries/sessio N.inc.php on line 83
This means that the memory path is incorrect when the session is initialized! The first reaction is to look in the php.ini configuration file:
| The code is as follows |
Copy Code |
Session.save_path = "/tmp"
|
The default is preceded by a semicolon, which means it is not enabled, and I have already enabled it when I configured it. Then why do you get an error? , so I found some information on the Internet, feeling all the same:
1. Check the Error.log (apache2.2logs) file to see if there are any error reports. Not found.
2, check whether the value of Session.save_handler in php.ini is files, if it is not changed to files
3, check whether the Session.save_path in php.ini file is commented, if there is, then remove the front ";".
4. Change the path behind Save_path to an existing path, such as "D:phptemp"
5. Check that the Temp folder's properties are readable and writable.
6. Restart the Apache server. Ok
I do not know those friends reproduced when they have tried to do not (spray here, the most hated that they did not test, on a brain of the wandering. No responsibility at all!)
According to the above process, after the investigation found that there is no solution, but the Jade server is nginx non-Apache.
Then I wrote a script test.php:
$r = Session_Start (); Var_dump ($R);
Printing results are:
Warning:session_start (): SAFE MODE restriction in effect. The script whose UID is 501 are not allowed to access/tmp owned by UID 0 in/data/www/test.php on line 3 Fatal error:sess Ion_start (): Failed to initialize Storage module:files (path:) in/data/www/test.php on line 3
PHP5 a security mode bug, the default session of the Save_path is the system's temporary directory, which will verify the permissions. This script cannot execute UID with/TMP owner UID is 501 and WWW user group permissions
There are two ways to solve this problem:
1. Turn off Safe mode;
2. Chown Change File/directory owner under command line
Of course both of these methods require you to have the server permissions.
Here is the profile of the php.ini:
[Session]
; Handler used to store/retrieve data.
; Http://php.net/session.save-handler
Session.save_handler = files; Argument passed to Save_handler. In the case of files, the the path
; Where data files are stored. Note:windows users has the
; Variable in order to use PHP ' s session functions.
;
; The path can be defined as:
;
; Session.save_path = "N;/path"
;
; Where N is an integer. Instead of storing all the session files in
; /path, what's this would do are use subdirectories n-levels deep, and
; Store the session data in those directories. This is useful if you
; Or your OS has problems with lots of the files in one directory, and is
; A more efficient layout for servers that handle lots of sessions.
;
; NOTE 1:php won't create this directory structure automatically.
; You can use the script with the Ext/session dir for that purpose.
; NOTE 2:see the garbage collection below if you choose to
; Use subdirectories for session storage
;
; The file storage module creates files using mode by default.
; You can change the by using
;
; Session.save_path = "N; Mode;/path "
;
; Where mode is the octal representation of the mode. Note that this
; Does not overwrite the process ' s umask.
; Http://php.net/session.save-path
Session.save_path = "/tmp"
; Whether to use cookies.
; Http://php.net/session.use-cookies
Session.use_cookies = 1
; Http://php.net/session.cookie-secure
; session.cookie_secure =
; This option forces PHP-to-fetch and use-a cookie for storing and maintaining
; The session ID. We encourage this operation as it's very helpful in combatting
; Session hijacking when not specifying and managing your own session ID. It is
; The end all is all of the session hijacking defense, but it's a good start.
; Http://php.net/session.use-only-cookies
Session.use_only_cookies = 1
; Name of the session (used as cookie name).
; Http://php.net/session.name
Session.name = Phpsessid
; Initialize session on request startup.
; Http://php.net/session.auto-start
Session.auto_start = 0
; Lifetime in seconds of cookies or, if 0, until browser is restarted.
; Http://php.net/session.cookie-lifetime
Session.cookie_lifetime = 0
; The path for which the cookie is valid.
; Http://php.net/session.cookie-path
Session.cookie_path =/
; The domain for which the cookie is valid.
; Http://php.net/session.cookie-domain
Session.cookie_domain =
; Whether or not to add the HTTPONLY flag to the cookie, which makes it inaccessible to browser scripting languages such as Javascript.
; Http://php.net/session.cookie-httponly
Session.cookie_httponly =
; Handler used to serialize data. PHP is the standard serializer of PHP.
; Http://php.net/session.serialize-handler
Session.serialize_handler = PHP
; Defines the probability, the ' garbage collection ' process is started
; On every session initialization. The probability is calculated by using
; Gc_probability/gc_divisor. Where Session.gc_probability is the numerator
; And Gc_divisor are the denominator in the equation. Setting this value to 1
; When the Session.gc_divisor value was give you approximately a 1% chance
; The GC would run on any give request.
; Default value:1
; Development Value:1
; Production value:1
; Http://php.net/session.gc-probability
session.gc_probability = 1
; Defines the probability, the ' garbage collection ' process is started on every
; Session initialization. The probability is calculated by using the following equation:
; Gc_probability/gc_divisor. Where Session.gc_probability is the numerator and
; Session.gc_divisor is the denominator in the equation. Setting this value to 1
; When the Session.gc_divisor value was give you approximately a 1% chance
; The GC would run on any give request. Increasing this value to the give you
; A 0.1% chance the GC would run on any give request. For high volume production servers,
; This was a more efficient approach.
; Default value:100
; Development value:1000
; Production value:1000
; Http://php.net/session.gc-divisor
Session.gc_divisor = 1000
; After this number of seconds, stored data would be seen as ' garbage ' and
; Cleaned up by the garbage collection process.
; Http://php.net/session.gc-maxlifetime
Session.gc_maxlifetime = 1440
; Note:if you is using the subdirectory option for storing session files
; (see session.save_path above), then garbage collection does *not*
; happen automatically. You'll need to do your own garbage
; Collection through a shell script, cron entry, or some other method.
; For example, the following script would is the equivalent of
; Setting Session.gc_maxlifetime to 1440 (1440 seconds = minutes):
; Find/path/to/sessions-cmin +24 | Xargs RM
; PHP 4.2 and less has an undocumented feature/bug that allows
; To initialize a session variable in the global scope, even when register_globals
; is disabled. PHP 4.3 and later would warn you, if this feature is used.
; You can disable the feature and the warning separately. At this time,
; The warning is only displayed, if BUG_COMPAT_42 is enabled. This feature
; Introduces some serious security problems if not handled correctly. It ' s
; Recommended this feature on production servers. But you
; Should enable the development servers and enable the warning as well. If You
; Do not enable the feature in development servers, you won ' t is warned when it ' s
; Used and debugging errors caused by this can is difficult to track down.
; Default Value:on
; Development Value:on
; Production Value:off
; Http://php.net/session.bug-compat-42
session.bug_compat_42 = Off
; This setting controls whether or is warned by PHP when initializing a
; Session value into the global space. Session.bug_compat_42 must be enabled before
; These warnings can be issued by PHP. See the directive above for more information.
; Default Value:on
; Development Value:on
; Production Value:off
; Http://php.net/session.bug-compat-warn
Session.bug_compat_warn = Off
; Check HTTP Referer to invalidate externally stored URLs containing IDs.
; Http_referer have to contain this substring for the session
; considered as valid.
; Http://php.net/session.referer-check
Session.referer_check =
; How many bytes to read from the file.
; Http://php.net/session.entropy-length
Session.entropy_length = 0
; Specified here to create the session ID.
; Http://php.net/session.entropy-file
; On systems that don ' t have/dev/urandom/dev/arandom can used
; On Windows, setting the Entropy_length setting would activate the
; Windows Random Source (using the CryptoAPI)
; session.entropy_file =/dev/urandom
; Set to {nocache,private,public,} to determine HTTP caching aspects
; Or leave this empty to avoid sending anti-caching headers.
; Http://php.net/session.cache-limiter
Session.cache_limiter = NoCache
; Document expires after n minutes.
; Http://php.net/session.cache-expire
Session.cache_expire = 180
; Trans SID support is disabled by default.
; Use of the trans Sid may risk your users security.
; Use the This option with caution.
; -User may send URL contains active session ID
; To and the person via. Email/irc/etc.
; -URL that contains active session ID may stored
; In publically accessible computer.
; -User may access your site with the same session ID
; Always using URLs stored in browser ' s history or bookmarks.
; Http://php.net/session.use-trans-sid
Session.use_trans_sid = 0
; Select a hash function for use in generating session IDs.
; Possible Values
; 0 (MD5-bits)
; 1 (SHA-1 bits)
; This option may also is set to the name of any hash function supported by
; The hash extension. A List of available hashes is returned by the Hash_algos ()
; function.
; Http://php.net/session.hash-function
session.hash_function = 0
; Define How many bits is stored in each character when converting
; The binary hash data to something readable.
; Possible values:
; 4 (4 bits:0-9, a-f)
; 5 (5 bits:0-9, a-v)
; 6 (6 bits:0-9, A-Z, a-Z, "-", ",")
; Default Value:4
; Development Value:5
; Production Value:5
; Http://php.net/session.hash-bits-per-character
Session.hash_bits_per_character = 5
; The URL rewriter would look for URLs in a defined set of HTML tags.
; Form/fieldset is special; If you include them here, the Rewriter would
; Add a hiddenfield with the info which is otherwise appended
; To URLs. If you want XHTML conformity, remove the form entry.
; Note that all valid entries require a "=", even if no value follows.
; Default Value: "a=href,area=href,frame=src,form=,fieldset="
; Development Value: "A=href,area=href,frame=src,input=src,form=fakeentry"
; Production Value: "A=href,area=href,frame=src,input=src,form=fakeentry"
; Http://php.net/url-rewriter.tags
Url_rewriter.tags = "A=href,area=href,frame=src,input=src,form=fakeentry" Because this is configured on a VPS, there are several items on it, so the gem opens a project, The Verification code feature for this item was found to be OK.
So look at the code as follows:
| The code is as follows |
Copy Code |
|
$sessSavePath = "/data/sessions/";
Session Save Path
if (is_writeable ($sessSavePath) && is_readable ($sessSavePath)) {Session_save_path ($sessSavePath);}
if (!empty ($cfg _domain_cookie)) session_set_cookie_params (0, '/', $cfg _domain_cookie); |
The above code is a folder before Session_Start () is initialized to determine if a session is present.
So in the phpmyadmin inside of the saved file/phpmyadmin/libraries/session.inc.php made the following changes:
| The code is as follows |
Copy Code |
if (! isset ($_cookie[$session _name])) {
On first start of session we check for errors
F.E. Session dir cannot is accessed-session file not created
$orig _error_count = $GLOBALS [' Error_Handler ']->counterrors ();
Session_save_path ('./tmp ');
Session_save_path ("/data/www/session");
$r = Session_Start ();
if ($r!== True
|| $orig _error_count! = $GLOBALS [' Error_Handler ']->counterrors ()
) {
Setcookie ($session _name, ", 1);
/*
* Session initialization is do before selecting language, so we
* Can not use the translations here.
*/
Pma_fatalerror (' cannot start session without errors, please check errors given in your PHP and/or webserver log file and C Onfigure your PHP installation properly. Also Ensure that cookie is enabled in your browser. ');
}
unset ($orig _error_count);
} else {
Session_save_path ("/data/www/session");
Session_Start ();
}
|
In Session_Start (); Session_save_path ("/data/www/session") was added earlier; Solved the problem.
Remember to pass @ini_set (' Session.save_path ', "/data/www/session");
This problem bothered me for a few hours, finally solved, so the record, it should be helpful in the future.
If it helps you, please leave a message. If you have any comments welcome the exchange!
http://www.bkjia.com/PHPjc/632062.html www.bkjia.com true http://www.bkjia.com/PHPjc/632062.html techarticle today in PHP call session prompt Fatal Error:session_start (): Failed to initialize storage module:files (session.inc.php on line 83 ) is wrong, let me share this question for you ...