Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to solve the Fatal error: session_start (): Failed to initialize storage module: files problem

2025-01-16 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)06/03 Report--

This article introduces the relevant knowledge of "how to solve the Fatal error: session_start (): Failed to initialize storage module: files problem". In the operation of actual cases, many people will encounter such a dilemma, so let the editor lead you to learn how to deal with these situations. I hope you can read it carefully and be able to achieve something!

The previous version of LNMP environment + phpmyamdin4.02, which was compiled and installed, suddenly appeared this problem today:

The copy code is as follows:

Fatal error: session_start (): Failed to initialize storage module: files (path:) in/ data/www/phpmyadmin/libraries/session.inc.php on line 83

There is an error in the storage path when the session session is initialized! The first reaction is to look at the configuration file in php.ini:

The copy code is as follows:

Session.save_path = "/ tmp"

By default, it is preceded by a semicolon, which means it is not enabled. It has already been enabled when I configured it before. Then why did you report it wrong? So I found some information on the Internet, and it felt the same:

1. Check the error.log (Apache2.2\ logs) 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 not files.

3. Check whether the session.save_path in the php.ini file is commented, and if so, remove the previous ";".

4. Change the path after save_path to the existing path, such as "D:\ php\ temp"

5. Check whether the properties of the temp folder are readable and writable.

6. Restart APACHE server. OK

I don't know if those buddies have tried it themselves when they reprint it (spray it here, and I hate the kind of people who turn around without testing themselves. Not responsible at all!)

According to the above process, after investigation, it is found that there is no solution at all, but the editor's server is nginx non-apache.

Then I wrote a script test.php:

The copy code is as follows:

$r = session_start ()

Var_dump ($r)

The print result is as follows:

The copy code is as follows:

Warning: session_start (): SAFE MODE Restriction in effect. The script whose uid is 501 is not allowed to access / tmp owned by uid 0 in / data/www/test.php on line 3 Fatal error: session_start (): Failed to initialize storage module: files (path:) in / data/www/test.php on line 3

It means php5 is a safe mode bug. By default, the save_path of session is the temporary directory of the system, so you have to verify permissions. And this script cannot be executed through / tmp owner uid 0. Uid is also the permission of the www user group.

There are two solutions to this:

1. Turn off safe mode

two。 Chown the owner of the file / directory at the command line

Of course, both methods require you to have access to the server.

The following is the configuration file for the sample php.ini:

The copy code is as follows:

[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, this is the path

; where data files are stored. Note: Windows users have to change this

; variable in order to use PHP's session functions.

; The path can be defined as:

; session.save_path = "Nipple path"

; where N is an integer. Instead of storing all the session files in

; / path, what this will do is use subdirectories N-levels deep, and

; store the session data in those directories. This is useful if you

; or your OS have problems with lots of files in one directory, and is

; a more efficient layout for servers that handle lots of sessions.

; NOTE 1: PHP will not create this directory structure automatically.

; You can use the script in the ext/session dir for that purpose.

; NOTE 2: See the section on garbage collection below if you choose to

; use subdirectories for session storage

; The file storage module creates files using mode 600by default.

; You can change that by using

; session.save_path = "Nathandom 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

; not the end all be all of 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 cookie 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 that 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 is the denominator in the equation. Setting this value to 1

; when the session.gc_divisor value is 100 will give you approximately a 1% chance

; the gc will 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 that 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 is 100 will give you approximately a 1% chance

; the gc will run on any give request. Increasing this value to 1000 will give you

; a 0.1% chance the gc will run on any give request. For high volume production servers

; this is 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 will 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 are using the subdirectory option for storing session files

; (see session.save_path above), then garbage collection does * not*

; happen automatically. You will 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 = 24 minutes):

; find / path/to/sessions-cmin + 24 | xargs rm

; PHP 4.2 and less have an undocumented feature/bug that allows you to

; to initialize a session variable in the global scope, even when register_globals

; is disabled. PHP 4.3 and later will 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 that you do not use this feature on production servers. But you

; should enable this on development servers and enable the warning as well. If you

; do not enable the feature on development servers, you won't be warned when it's

; used and debugging errors caused by this can be 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 not you are 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 has to contain this substring for the session to be

; 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 be used

; On windows, setting the entropy_length setting will 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 trans sid may risk your users security.

; Use this option with caution.

;-User may send URL contains active session ID

; to other person via. Email/irc/etc.

;-URL that contains active session ID may be stored

; in publically accessible computer.

;-User may access your site with the same session ID

; always using URL 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 128 bits)

; 1 (SHA-1 160 bits)

; This option may also be 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 are stored in each character when converting

; the binary hash data to something readable.

; Possible values:

; 4 (4 bits: 0-9, a murf)

; 5 (5 bits: 0-9, a murv)

; 6 (6 bits: 0-9, Amurz, Amurz, "-", ")

; 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 will look for URLs in a defined set of HTML tags.

; form/fieldset are special; if you include them here, the rewriter will

; add a hidden field 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 standard href _ r _ r

; Development Value: "axianghrefmento arearefm.framebooksrcquotient inputforcesrcformformcake entry"

; Production Value: "axianghrefmento arearefm.framebooksrcquotient inputforcesrcformformcake entry"

; http://php.net/url-rewriter.tags

Url_rewriter.tags = "axianghrefgrame arearefrereref _ ref _ frame _ r _ c _ entry

Because this is configured on a VPS, there are multiple projects on it, so the editor opens a project and finds that the CAPTCHA function of this project is OK.

So look at the code as follows:

The copy code is as follows:

$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.

The above code determines whether there is a folder for a session session before session_start () initializes.

So the saved file / phpmyadmin/libraries/session.inc.php in phpmyadmin is modified as follows:

The copy code is as follows:

If (! Isset ($_ COOKIE [$session_name])) {

/ / on first start of session we check for errors

/ / f.e. Session dir cannot be 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 done before selecting language, so we

* can not use translations here.

, /

PMA_fatalError ('Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.')

}

Unset ($orig_error_count)

} else {

Session_save_path ("/ data/www/session")

Session_start ()

}

Adding session_save_path ("/ data/www/session") in front of session_start (); solves this problem.

Remember to pass @ ini_set ('session.save_path', "/ data/www/session"); invalid!

That's all for "how to solve the Fatal error: session_start (): Failed to initialize storage module: files problem". Thank you for reading. If you want to know more about the industry, you can follow the website, the editor will output more high-quality practical articles for you!

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report