PHP fails to start the session. The reason should be: there is an error in the settings related to the session in php.ini, which causes the session cookies to be unable to be sent and retained.
Troubleshooting steps: 1. Create a phpinfo.php and open it in the browser. Focus on the session part 2. session.cookie_domain sets domain name A, that is, session.cookie_domain = domain name A. As a result, session cookies become invalid in domain name B. Solution 1: Set session.cookie_domain in php.ini to empty, that is: session.cookie_domain = Solution 2: session.cookie_domain = set to the domain name you use 3. In php.ini, the session.cookie_path setting is too strict. For example, set it to: session.cookie_path = /hjaa/, which means that only the hjaa directory and subdirectories under the root domain name are allowed to use the session (more precisely, if session.cookie_domain sets the A domain name, it means the hjaa directory under the A domain name and subdirectories are allowed to use session) Solution: Set session.cookie_path in php.ini to "/" (without double quotes) or a more relaxed security setting you think, such as: session.cookie_path = / 4. In php.ini, session.cookie_path and session.save_path are confused, thinking that session.cookie_path is the path where session temporary files are stored. But in fact, session.cookie_path represents the website domain in which the session is valid, and has nothing to do with the file permissions of the server; session.save_path is the path where session temporary files are stored. For example, setting session.cookie_path to: session.cookie_path = C:/WINDOWS/TEMP will cause a fault. 5. The directory set by session.save_path does not have write permission; or the setting is incorrect (for example, the set folder does not exist at all). Note: If empty, the default system temporary folder path is used. Windows is usually "%SystemRoot%TEMP", and Unix is usually "/tmp" Solution: (1) If session.save_path is not left blank, please confirm that the setting value corresponds to a folder and that the folder exists. If you really don't know how to set it, please comment this setting or change it to a null value to let PHP use the default settings. (2) In the corresponding directory, give the corresponding user write permission. For example, for IIS, the Internet guest account should be given write permission. 6. When session.auto_start = on, executing session_start() will generate a new session_ids. The advantage of session.auto_start = on is that you will never forget to execute session_start() or the location of session_start() in the program is wrong. The disadvantage is that if you are using third-party code, you must delete all session_start() in it. Otherwise, correct results will not be obtained Solution: (1) session.auto_start = Off (2) Remove session_start(); in the program |