Solution to the problem that php cannot receive post parameters: 1. Check the header information "content-type"; 2. Use the [file_get_contents("php://input")] method to obtain the input stream.
Recommended: "PHP Video Tutorial"
The reason why the PHP interface post data cannot receive parameters
1. Check whether the content-type of the header information is "content-type:application/x-www-form-urlencoded". This transmission is to submit data in a form and PHP uses $_POST to accept it. .
2. If the content-type of the header information is "content-type:application/json", the transmission is to submit data in json mode, and PHP needs to use file_get_contents("php://input") to obtain it. The input stream method accepts
3. If you are new to PHP, you cannot get the post data using echo $_POST["variable"] and var_dump($_POST).
The solution is as follows:
1. Find the php.ini configuration file, look for the enable_post_data_reading variable, make sure it is open, and remove the semicolon in front of the statement (the statement with a semicolon is Comment statement):
2. Observe the address of your browser running php, you will find that the service port number used to open the browser in PhpStorm is 63342 (URL is in the form of localhost:63342/)
So the reason for the problem is: PhpStorm uses its own internal server by default, but does not use the apache server in xampp. The built-in server phpStorm uses port 63342, and there is a problem within the server, causing the POST method to be abnormal; and if you place the project in the working directory of the Apache server and enter localhost in the address bar, the Apache server is used at this time, and the default port number is 80, the Apache server can run the program normally.
Since there is a problem with PhpStorm’s internal server, the solution is to find a way not to use the internal server. There are two methods:
1. Create the project in the working directory of the Apache server, and directly enter the localhost address in the browser address bar each time it runs
2. If you still want to use Open the browser debugger in PhpStorm, which can be achieved by changing the configuration:
(1) First map the apache server directory to the local directory
The method is as follows:
1. Find /xampp/apache/conf/httpd.conf file
2. Find the
3. Add The following code:
# /phpworkspace/ : The alias of the directory on other disks is the alias of the directory you want to map
# "E:/phpworkspace/" : This is the directory Absolute path
Alias /phpworkspace/ "E:/phpworkspace/"
# Now you can access the projects in the phpworkspace folder under the E drive through //localhost/phpworkspace/
4.
Add a piece of code at the same level as
<Directory "E:/phpworkspace/"> AllowOverride All Options Indexes FollowSymLinks Includes ExecCGI Require all granted </Directory>
Completed. Now restart Apache and visit: http://localhost /phpworkspace/ That’s it
(2) Then in PhpStorm, find File->Settings->Build, Execution, Deployment->Deployment. It is initially empty. Click the green plus sign. Add a local server, just name it localhost, select In place for Type:
After the creation is completed, the default settings under the Connection tab on the right have configured the server as the Apache server under port 80, that is, http:// localhost
Change it to the working directory you mapped to the local project:
Set the Local path under the Mappings tag to the directory of your local project:
At this time, start from PhpStorm Click the browser, and the accessed URL no longer has the field 63342 port. Instead, the local Apache server is used, and the corresponding form data can be received normally
The above is the detailed content of What should I do if php cannot receive post parameters?. For more information, please follow other related articles on the PHP Chinese website!