skip to Main Content

I having this problem for the last 12 hours, i read about 50 articles, 50 questions here, i can’t fix it. I will be more precise, i want others get the solution too.

The problem: I have a hosting account in namech****, and a local server. Linux there and Xampp Windows here, this only works in my local server.

test.php:

<?php    
    $data = json_decode(file_get_contents("php://input"), true);
        var_dump($data);
?>

The post request is:

POST /test.php HTTP/1.1
Host: myweb.io
Content-Type: application/json
Content-Length: 77

{
  "test": "product/created",
  "other": "https://google.com/"
}

I use REQBIN for test the POST request.

This is the response in my hosting:

HTTP/1.1 200 OK
Date: Sun, 03 May 2020 17:04:33 GMT
Server: Apache
X-Powered-By: PHP/7.4.5
Content-Encoding: gzip
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

NULL

This is the correct response on my local enviroment using XAMPP

HTTP/1.1 200 OK
Date: Sun, 03 May 2020 17:15:19 GMT
Server: Apache/2.4.41 (Win64) OpenSSL/1.1.1c PHP/7.4.3
X-Powered-By: PHP/7.4.3
Content-Length: 94
Content-Type: text/html; charset=UTF-8

Array
(
    [test] => product/created
    [other] => https://google.com/
)

Things i’ve tried:

  • Set the allow_url_fopen to 1, or 0.
  • Downgrade PHP versión (Tried 7.1,2,3,4)
  • Uninstall SSL Certificate
  • Millions of things in PHP.INI
  • Removing htaccess
  • Removing some php modules / extensions
    UPDATE:
  • The file is individual, cheched that the function is only execute one time
  • I check if there are no redirections. (Htaccess, cPanel settings)

4

Answers


  1. Chosen as BEST ANSWER

    I fix it, don't know how, but i think the solution was: Delete my htaccess completely, no redirections (http to https). Dont test with reqbin, test it with php pure code, or PostMan.


  2. Believe it or not:

    Changing:
    RewriteRule ^ /%1 [NC,L,R]

    to

    RewriteRule ^ %1 [NC,L,R]

    and then back to

    RewriteRule ^ /%1 [NC,L,R]

    And similarly
    RewriteRule ^(.*?)/?$ /$1.php [NC,L]

    to

    RewriteRule ^(.*?)/?$ $1.php [NC,L]

    and then back to

    RewriteRule ^(.*?)/?$ /$1.php [NC,L]

    Appeared to sort it out!

    Login or Signup to reply.
  3. I also had this problem, and I realized that my address was http:// instead of https://.

    Now I have something with file_get_contents("php://input")

    I hope this will solve your problem.

    Login or Signup to reply.
  4. I had the same issue; apparently an HTTP Redirect (e.g 301 to https) was prohibiting the data from being redirected along.

    Make sure you have no redirects.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search