小白教程

 找回密码
 立即注册
查看: 7479|回复: 4

[已解决]apache访问php和使用php执行php文件时,出现差异

[复制链接]

1

主题

4

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2021-4-15 22:48:02 | 显示全部楼层 |阅读模式
代码如下,文件名index.php
  1. $url1 = "http://ip:port/xxx/xxx/xxx"; // 格式如此,真实的url可访问
  2. $url2 = "www.baidu.com";

  3. // 可以得到结果
  4. $ch1 = curl_init($ur1l);
  5. curl_exec($ch);
  6. curl_close($ch);

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


但是如果把url换成"www.baidu.com",上述三种方式都能正确返回结果。
可能是什么原因导致的呢?
最佳答案
2021-5-12 01:53:26
$url2是一个跳转的https超链接, 使用浏览器年份历史比较长的一般认为:URL地址最好加"http(https)://"前缀,以使用完整的地址协议
  1. $url2='http://www.baidu.com';
  2. curl_setopt($ch2, CURLOPT_URL, $url2);
  3. if ($https) {
  4.    // curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查
  5.    // curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
  6.    curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, true); // 对认证证书来源的检查
  7.    curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
  8. }
  9. curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, true);
  10. // 设置https超链接延时超时
  11. curl_setopt($ch2, CURLOPT_TIMEOUT, 10);
  12. $output = curl_exec($ch2);
复制代码
回复

使用道具 举报

1

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2021-4-24 13:47:32 | 显示全部楼层
一点点的调试 先exit个最简单的字符串看看能不能正常执行
回复

使用道具 举报

0

主题

1

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-4-28 07:12:57 | 显示全部楼层
看看信息啊、好像是curl_error
回复

使用道具 举报

0

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2021-5-12 01:53:26 | 显示全部楼层 &
$url2是一个跳转的https超链接, 使用浏览器年份历史比较长的一般认为:URL地址最好加"http(https)://"前缀,以使用完整的地址协议
  1. $url2='http://www.baidu.com';
  2. curl_setopt($ch2, CURLOPT_URL, $url2);
  3. if ($https) {
  4.    // curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查
  5.    // curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
  6.    curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, true); // 对认证证书来源的检查
  7.    curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
  8. }
  9. curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, true);
  10. // 设置https超链接延时超时
  11. curl_setopt($ch2, CURLOPT_TIMEOUT, 10);
  12. $output = curl_exec($ch2);
复制代码
回复

使用道具 举报

0

主题

1

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-5-18 08:57:23 | 显示全部楼层
应该是网络隔离的问题,访问的服务是公司内部网络,但是还是不明白为什么直接curl就可以,套一层apache就不行了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|小白教程 ( 粤ICP备20019910号 )

GMT+8, 2024-11-24 13:48 , Processed in 0.025892 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表