cURL 脚本可在本地主机上运行,​​但不能在实时服务器上运行

2024-02-13

我正在尝试通过脚本发送短信。我正在使用curl 运行在供应商服务器上发送短信的API。 fopen 和 file_get_contents 在我的服务器上被阻止。所以,cURL 是我唯一的选择。

剧本 :-

// Initialize options for REST interface
$adb_url="http://example.com";
$adb_option_defaults = array(
    CURLOPT_HEADER => false,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 2
  ); 
// ArangoDB REST function.
// Connection are created demand and closed by PHP on exit.
function adb_rest($method,$uri,$query=NULL,$json=NULL,$options=NULL){
    global $adb_url,$adb_handle,$adb_option_defaults;

    // Connect 
    if(!isset($adb_handle)) $adb_handle = curl_init();

    // Compose query
    $options = array(
    CURLOPT_URL => $adb_url.$uri."?".$query,
    CURLOPT_CUSTOMREQUEST => $method, // GET POST PUT PATCH DELETE HEAD OPTIONS 
    CURLOPT_POSTFIELDS => $json,
    CURLOPT_PORT => 8080,
    CURLOPT_HTTPHEADER => Array('Content-type: text/plain')
    ); 
    curl_setopt_array($adb_handle,($options + $adb_option_defaults)); 

    // send request and wait for responce
    $responce =  curl_exec($adb_handle);

    print_r(curl_getinfo($adb_handle));

    return($responce);
}
// Create a collection
$responce = adb_rest("GET","/bulksms/bulksms","username=xxx&password=xxx&type=2&dlr=1&destination=xxx&source=xxx&message=xxxxxx",'');

实时服务器 cURL 响应:

Array ( 
   [url] => http://example.com/bulksms/bulksms?
username=xxx&password=xxx&type=2&dlr=1&destination=xxx&source=xxx&message=xxxxxx 
   [content_type] => 
   [http_code] => 0 
   [header_size] => 0 
   [request_size] => 0 
   [filetime] => -1 
   [ssl_verify_result] => 0 
   [redirect_count] => 0 
   [total_time] => 1.999604 
   [namelookup_time] => 1.315312 
   [connect_time] => 0 
   [pretransfer_time] => 0 
   [size_upload] => 0 
   [size_download] => 0 
   [speed_download] => 0 
   [speed_upload] => 0 
   [download_content_length] => -1
   [upload_content_length] => -1
   [starttransfer_time] => 0 
   [redirect_time] => 0 [certinfo] => Array ( ) [redirect_url] => )    

本地主机 cURL 响应:

Array (
   [url] => http://example.com/bulksms/bulksms?
username=xxx&password=xxx&type=2&dlr=1&destination=xxx&source=xxx&message=xxxxxx 
   [content_type] => text/plain
   [http_code] => 200
   [header_size] => 129
   [request_size] => 646
   [filetime] => -1
   [ssl_verify_result] => 0
   [redirect_count] => 0
   [total_time] => 0.14 
   [namelookup_time] => 0
   [connect_time] => 0.047
   [pretransfer_time] => 0.047
   [size_upload] => 0
   [size_download] => 54
   [speed_download] => 385
   [speed_upload] => 0 
   [download_content_length] => 54
   [upload_content_length] => 0
   [starttransfer_time] => 0.14
   [redirect_time] => 0
   [certinfo] => Array ( )
   [primary_ip] => xxx.xxx.xxx.xxx 
   [primary_port] => 8080
   [local_ip] => xxx.xxx.x.xxx
   [local_port] => 56359
   [redirect_url] => )    

通过本地主机我收到一条短信,而通过服务器则没有。

更新 - 本地主机 php 版本:

PHP Version 5.4.3

服务器php版本:

PHP Version 5.3.27

这很难说,但我建议添加CURLOPT_CONNECTTIMEOUT此外CURLOPT_TIMEOUT到你的卷曲选项。我正在设置CURLOPT_CONNECTTIMEOUT to 5在这个例子中。并设置CURLOPT_HTTPGET to TRUE。另外,添加CURLOPT_USERAGENT以防万一远程服务器需要用户代理:

// Compose query
$options = array(
CURLOPT_URL => $adb_url.$uri."?".$query,
CURLOPT_CUSTOMREQUEST => $method, // GET POST PUT PATCH DELETE HEAD OPTIONS 
CURLOPT_POSTFIELDS => $json,
CURLOPT_PORT => 8080,
CURLOPT_HTTPGET => TRUE,
CURLOPT_CONNECTTIMEOUT => 5,
CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)",
CURLOPT_HTTPHEADER => Array('Content-type: text/plain')
); 
curl_setopt_array($adb_handle,($options + $adb_option_defaults)); 

另外,不清楚本地设置上的 PHP 版本是否与服务器相同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cURL 脚本可在本地主机上运行,​​但不能在实时服务器上运行 的相关文章

  • 最佳实践:在 PHP 中导入 mySQL 文件;分割查询

    我遇到了一种情况 我必须更新共享托管提供商上的网站 该网站有一个 CMS 使用 FTP 上传 CMS 文件非常简单 我还必须导入一个大的 相对于 PHP 脚本的范围 数据库文件 未压缩时大约 2 3 MB Mysql 已关闭 无法从外部访问
  • 随机字体颜色

    我需要用 2 或 3 种随机颜色为文本着色 我如何在 PHP 或 JavaScript 中执行此操作 color str pad sprintf x x x rand 0 255 rand 0 255 rand 0 255 6 rand 0
  • PHP crypt() Blowfish 函数不工作

    这是我第一次在 PHP 中使用 crypt 函数 我不明白为什么它不起作用 我的代码基于这篇文章 http www techrepublic com blog australia secure passwords with blowfish
  • 无法上传大于 8MB 的文件

    我正在尝试制作一个文件上传脚本 并且我已经为这个问题苦苦挣扎了一段时间 我已阅读并尝试了与此相关的所有答案 但无济于事 这是我在 php 中尝试过的 文件名 file uploads On upload max filesize 100M
  • 帮助我将以十六进制表示的长值转换回日期/时间

    我有一个日期值 据说它是 8 个字节 一个 long 又名 int64 值 并转换为十六进制 60f347d15798c901 我如何使用 PHP 将这个和类似的值转换为时间 日期 将其转换为十进制给我 96 243 71 209 87 1
  • 为什么我的 php 代码无法连接到远程 MySql 数据库?

    我正在尝试连接到远程 MySql 数据库 但收到以下错误消息 警告 mysqli connect HY000 2002 连接尝试失败 因为连接方在一段时间后没有正确响应 或者由于连接的主机未能响应而建立的连接失败 在 C myLocalDi
  • 在 PHP 扩展中,推荐从 std::string 返回值的方法

    我们有一个简单的 PHP 函数 其目的是调用 C 自由函数std string callLibrary std string 并返回其std string返回值 目前看起来是这样的 PHP FUNCTION call library cha
  • XAMPP Windows 上的 Php Cron 作业

    嗯 我是这个词的新手CRON 据我所知 这是一个Unix安排特定操作在定义的时间间隔后执行的概念 我需要运行一个php文件 每小时更新一次数据库 但我的困惑在于安排执行 我在用XAMPP用于 Windows 7 上的本地开发测试 我发现了什
  • PHP - 将文件系统路径转换为 ​​URL

    我经常发现项目中的文件需要从文件系统和用户浏览器访问 一个例子是上传照片 我需要访问文件系统上的文件 以便可以使用 GD 来更改图像或移动它们 但我的用户还需要能够从类似以下的 URL 访问文件example com uploads myp
  • 连接到 mysql 服务器(localhost)非常慢

    实际上有点复杂 摘要 与数据库的连接非常慢 页面渲染大约需要 10 秒 但页面上的最后一条语句是一个回显 当页面在 Firefox 中加载时我可以看到它的输出 IE 是相同的 在谷歌浏览器中 只有在加载完成后输出才可见 不同浏览器的加载时间
  • php7ts.dll 无法加载到服务器

    今天我已经安装了php7 但是当我重新启动apache时 它无法启动 尽管我再次编辑了httpd xampp conf文件到配置php7 无论如何我去了C xampp并运行apache start bat 然后我看到以下错误 Apache
  • 查找关联数组中最小值的键

    在 PHP 中 假设您有一个如下所示的关联数组 pets array cats gt 1 dogs gt 2 fish gt 3 我如何找到具有最低值的密钥 在这里 我要寻找cats 是否有一些我错过的内置 PHP 函数可以实现此目的 如果
  • MySQL - 重命名列

    如何重命名 mysql 列help to content在我的桌子上tbl help mysql query ALTER TABLE tbl help CHANGE COLUMN help content 您必须在更改列语句中包含列的定义
  • 按索引偶数或奇数将数组拆分为两个数组

    我有这个数组 array array a b c d e f g 我想根据索引是偶数还是奇数将其分成两个数组 如下所示 odd array a c e g even array b d f 提前致谢 一种解决方案 使用匿名函数和array
  • PHP 生成的 XML 显示无效的 Char 值 27 消息

    我使用 PHP 库生成 XML 如下所示 dom new DOMDocument 1 0 utf 8 执行上述操作会生成一个页面 该页面在输出顶部显示一条消息 此页面包含以下错误 第 16 行第 274505 列错误 PCDATA 无效 C
  • WSDL 中的数组响应 - SOAP PHP

    在我的 wsdl 代码中 我得到一个整数 我想返回数组中的结果 为什么在我的输入中我只有一个整数 而我需要数组中的结果 因为在我的 php 函数中 我想从客户端选择的整数中的数据库返回信息 例如 我的客户发送1 在我的php中 我从数据库中
  • 根据 WooCommerce 中的订单数量设置折扣

    在WooCommerce中 如何根据订单数量设置折扣 例如 我想根据客户订单应用折扣 首单折扣 50 美元 第二次订购折扣 30 美元 第三次订购折扣10美元 我搜索过互联网但没有找到任何可用的解决方案或插件 Thanks 这是一个挂钩的自
  • 在数据库中存储差异的最紧凑方式是什么?

    我想实现类似于维基媒体的修订历史的东西 最好使用的 PHP 函数 库 扩展 算法是什么 我希望差异尽可能紧凑 但我很高兴只能显示每个修订版与其同级修订版之间的差异 并且一次只能回滚一个修订版 在某些情况下 只有几个字符可能会发生变化 而在其
  • 如何使用PHP在服务器端缩小图像?

    我有一些从服务器提取的图像 imgUrl保存图像的路径 现在我用 img src width 100 height 200 或 CSS 来缩小图像 但我想在 PHP 中执行此操作 以便将已缩放的图像提供给 DOM 有任何想法吗 Thanks
  • 根据产品变体术语将收件人添加到 Woocommerce 电子邮件通知

    我创建了一个 Woocommerce 插件并要求它做两件事 根据购物车中的产品变体 向特定电子邮件地址发送通知消息 电子邮件必须仅包含相关产品 不得包含其他属性的产品 例如 产品 A 具有名为 Chef 的属性 其中 Chef one 和

随机推荐