


The painful experience of losing Apache + PHP SESSION under Windows
Today’s work is to migrate a PHP site to a new server.
Create a Windows Server 2008 virtual machine, and stop the net stop http service on it (to avoid competing for port 80), install and configure Apache + PHP, migrate the site to the new server, the site opens normally, and Apache + PHP runs normally , the connection to MySql Server was normal, everything was fine, I was thinking of completing the work in half an hour, but then the nightmare began.
This site uses single sign-on, and the login process includes JavaScript asynchronous operations, including SOAP calls to Web Services. After logging in, it jumped directly back to the login page without any error message. We considered the following possibilities:
1. Is the account abnormal? Tested on other systems, the account status is normal.
2. Did the JavaScript asynchronous operation fail? Use IE developer tools to track the Javascript return value, and the return value is normal.
3. Did the Web Service call fail? Use Fiddler to track the return value of the Web Service, indicating that the verification has been successful and the local login has been completed.
After repeated tracking and debugging, I began to suspect that the SESSION of the site was lost:
1. The JavaScript asynchronous operation failed to set the SESSION. Is it because the SESSION IDs of synchronous access and asynchronous access are different? This has only happened with asynchronous calls in Flash, will it also happen with JavaScript? The SESSION ID value of output synchronous access and asynchronous access is the same.
2. Create 2 PHP test pages, set SESSION in one page, but cannot read it in the other page. Check the php.ini related settings, it seems to be normal. Check the session.save_path = "C:/php/tmp" path, but there are no SESSION related files, and the setting does not even include the tmp directory.
The ending is ridiculous. Without the tmp directory, PHP cannot write the SESSION file, and naturally the SESSION is lost. Why is there no tmp directory? Because it is not included in the installation package...my 3 hours.
The above introduces the painful experience of losing Apache + PHP SESSION under Windows, including the content. I hope it will be helpful to friends who are interested in PHP tutorials.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Running the H5 project requires the following steps: installing necessary tools such as web server, Node.js, development tools, etc. Build a development environment, create project folders, initialize projects, and write code. Start the development server and run the command using the command line. Preview the project in your browser and enter the development server URL. Publish projects, optimize code, deploy projects, and set up web server configuration.

In PHP8, match expressions are a new control structure that returns different results based on the value of the expression. 1) It is similar to a switch statement, but returns a value instead of an execution statement block. 2) The match expression is strictly compared (===), which improves security. 3) It avoids possible break omissions in switch statements and enhances the simplicity and readability of the code.

In PHP, you can effectively prevent CSRF attacks by using unpredictable tokens. Specific methods include: 1. Generate and embed CSRF tokens in the form; 2. Verify the validity of the token when processing the request.

In PHP, the final keyword is used to prevent classes from being inherited and methods being overwritten. 1) When marking the class as final, the class cannot be inherited. 2) When marking the method as final, the method cannot be rewritten by the subclass. Using final keywords ensures the stability and security of your code.

The... (splat) operator in PHP is used to unpack function parameters and arrays, improving code simplicity and efficiency. 1) Function parameter unpacking: Pass the array element as a parameter to the function. 2) Array unpacking: Unpack an array into another array or as a function parameter.

Strict types in PHP are enabled by adding declare(strict_types=1); at the top of the file. 1) It forces type checking of function parameters and return values to prevent implicit type conversion. 2) Using strict types can improve the reliability and predictability of the code, reduce bugs, and improve maintainability and readability.

Composer is a dependency management tool for PHP. The core steps of using Composer include: 1) Declare dependencies in composer.json, such as "stripe/stripe-php":"^7.0"; 2) Run composerinstall to download and configure dependencies; 3) Manage versions and autoloads through composer.lock and autoload.php. Composer simplifies dependency management and improves project efficiency and maintainability.

The future of PHP will be achieved by adapting to new technology trends and introducing innovative features: 1) Adapting to cloud computing, containerization and microservice architectures, supporting Docker and Kubernetes; 2) introducing JIT compilers and enumeration types to improve performance and data processing efficiency; 3) Continuously optimize performance and promote best practices.
