通过 PHP shell_exec() 执行 cURL 返回与通过命令行执行 cURL 不同的响应

kyo*_*kyo 5 php unix macos shell curl

我跑了

我的终端上有一个 cURL

注意:状态= b4cf8fe7-aa68-4b25-8f9a-03a67fb420c7

curl -c session_cookies.txt "https://login.uat.site.be/openid/oauth/authorize?client_id=site&state=b4cf8fe7-aa68-4b25-8f9a-03a67fb420c7&nonce5ba13e5f-256d-425d-808b-1e05d2aa3d72&response_type=code&claims=%7B%22id_token%22%3A%7B%22http%3A%2F%2Fsite.be%2Fclaims%2Froles%22%3Anull%7D%7D" 2>/dev/null| curl -v -b session_cookies.txt -L -H "Content-Type: application/x-www-form-urlencoded" -v -d 'j_username=manager-sitelogin@gmail.com&j_password=site1' "https://login.uat.site.be/openid/login.do" 2>&1 >/dev/null | grep Location | grep code=
Run Code Online (Sandbox Code Playgroud)

我收到了这个回复

< Location: https://testserver.sitenets.com/user/secure/dashboard?code=zvk495dsnq1ycLKZgN8oqfFxQogg2oql&state=b4cf8fe7-aa68-4b25-8f9a-03a67fb420c7
Run Code Online (Sandbox Code Playgroud)

注意:状态= b4cf8fe7-aa68-4b25-8f9a-03a67fb420c7


PHP

注意:状态= b4cf8fe7-aa68-4b25-8f9a-03a67fb420c7

$cmd = 'curl -c session_cookies.txt "https://login.uat.site.be/openid/oauth/authorize?client_id=site&state=b4cf8fe7-aa68-4b25-8f9a-03a67fb420c7&nonce5ba13e5f-256d-425d-808b-1e05d2aa3d72&response_type=code&claims=%7B%22id_token%22%3A%7B%22http%3A%2F%2Fsite.be%2Fclaims%2Froles%22%3Anull%7D%7D" 2>/dev/null| curl -v -b session_cookies.txt -L -H "Content-Type: application/x-www-form-urlencoded" -v -d 'j_username=manager-sitelogin@gmail.com&j_password=site1' "https://login.uat.site.be/openid/login.do" 2>&1 >/dev/null | grep Location | grep code=';


$result = shell_exec($cmd);

dd($result); 
Run Code Online (Sandbox Code Playgroud)

注意:状态!= b4cf8fe7-aa68-4b25-8f9a-03a67fb420c7

:状态 = 12345678-256d-425d-808b-1e05d2aa3d72

< Location: https://testserver.sitenets.com/user/secure/dashboard?code=zvk495dsnq1ycLKZgN8oqfFxQogg2oql&state=12345678-256d-425d-808b-1e05d2aa3d72
Run Code Online (Sandbox Code Playgroud)

当我运行时shell_exec($cmd),我的状态总是与我提交的状态不同。这怎么可能?

它是否缓存在我的本地计算机上的某个位置?我应该清除一些东西吗?

为什么shell_exec()返回的结果与直接在终端上执行的结果略有不同?我什至尝试使用exec(),同样的结果。