沸云 发表于 2021-4-15 22:48:02

apache访问php和使用php执行php文件时,出现差异

代码如下,文件名index.php
$url1 = "http://ip:port/xxx/xxx/xxx"; // 格式如此,真实的url可访问
$url2 = "www.baidu.com";

// 可以得到结果
$ch1 = curl_init($ur1l);
curl_exec($ch);
curl_close($ch);

// 运行卡住
$ch2 = curl_init($url2);
curl_exec($ch);
curl_close($ch);问题如下
直接使用       curl http://ip:port/xxx/xxx/xxx正确返回结果
在shell运行   php index.php                         正确返回结果
在浏览器打开localhost/index.php               运行卡住,无结果


但是如果把url换成"www.baidu.com",上述三种方式都能正确返回结果。
可能是什么原因导致的呢?

奉诏讨逆 发表于 2021-4-24 13:47:32

一点点的调试 先exit个最简单的字符串看看能不能正常执行

小粥以熬成老粥 发表于 2021-4-28 07:12:57

看看信息啊、好像是curl_error

男宾飼草 发表于 2021-5-12 01:53:26

$url2是一个跳转的https超链接, 使用浏览器年份历史比较长的一般认为:URL地址最好加"http(https)://"前缀,以使用完整的地址协议
$url2='http://www.baidu.com';
curl_setopt($ch2, CURLOPT_URL, $url2);
if ($https) {
   // curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查
   // curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
   curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, true); // 对认证证书来源的检查
   curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
}
curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, true);
// 设置https超链接延时超时
curl_setopt($ch2, CURLOPT_TIMEOUT, 10);
$output = curl_exec($ch2);

又梦徽州 发表于 2021-5-18 08:57:23

应该是网络隔离的问题,访问的服务是公司内部网络,但是还是不明白为什么直接curl就可以,套一层apache就不行了
页: [1]
查看完整版本: apache访问php和使用php执行php文件时,出现差异