我需要实现一种方法来对位于同一服务器或另一台服务器上的页面进行POST调用.我们不能使用include,因为我们调用的文件通常调用不同的数据库或具有相同名称的函数.
我一直在尝试使用curl实现这一点,虽然它在从另一台服务器调用文件时工作得很好,但在调用文件所在的同一服务器时,我什么都没有.
编辑添加一些代码:我正在做的简化版本:
File1.php
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "www.myserver.com/File2.php");
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>
Run Code Online (Sandbox Code Playgroud)
File2.php
<?php
echo "I'M IN!!";
?>
Run Code Online (Sandbox Code Playgroud)
在调用File1.php后,我什么都没得到,但如果File2.php在另一台服务器上,那么我得到一个结果.有帮助吗?
我尝试使用服务器URL(http ...)和文件的总地址(/ home/wwww ....)
Mar*_*c B 51
请注意,如果您向自己的站点发出CURL请求,那么您正在使用默认会话处理程序,并且您通过CURL请求的页面使用与生成请求的页面相同的会话,您将运行陷入僵局.
默认会话处理程序在页面请求的持续时间内锁定会话文件.当您尝试使用同一会话请求另一个页面时,该后续请求将挂起,直到请求超时或会话文件可用.由于您正在执行内部CURL,因此运行CURL的脚本将锁定会话文件,并且CURL请求永远无法完成,因为目标页面永远不会加载会话.
因为当您尝试使用公共 ip 请求本地服务器时,apache 无法解析到其本地域。因此,您必须检查该域使用的是哪个本地 ip apache。然后您需要编辑 /etc/hosts 文件并添加带有本地 ip 和您的域的新行。例如:
我在 apache 虚拟主机中该域的本地 ip 是:172.190.1.120,我的域是 mydomain.com 所以我将添加:
172.190.1.120 mydomain.com
然后你的卷曲将正常工作。