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

ApocalypseWan 2020-04-04 12:55:08
代码如下,文件名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",上述三种方式都能正确返回结果。
可能是什么原因导致的呢?
...全文
497 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
浴火_凤凰 2020-07-01
  • 打赏
  • 举报
回复

$url1 = "http://ip:port/xxx/xxx/xxx"; // 格式如此,真实的url可访问
$url2 = "www.baidu.com";

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

// 运行卡住
$ch2 = curl_init($url2);
curl_exec($ch2);
curl_close($ch2);
楼主的代码 有语法错误啊 就是没有用到$ch1 $ch2 用的都是$ch 改过之后 测试没有问题啊
ApocalypseWan 2020-04-23
  • 打赏
  • 举报
回复
应该是网络隔离的问题,访问的服务是公司内部网络,但是还是不明白为什么直接curl就可以,套一层apache就不行了
laoyouzhazi 2020-04-17
  • 打赏
  • 举报
回复
$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);
冰月渊 2020-04-15
  • 打赏
  • 举报
回复
看看信息啊、好像是curl_error
EVKJ 2020-04-14
  • 打赏
  • 举报
回复
guzzle挺好用的
yaofare 2020-04-09
  • 打赏
  • 举报
回复
一点点的调试 先exit个最简单的字符串看看能不能正常执行

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧