【发布时间】:2016-09-16 15:57:13
【问题描述】:
我正在尝试使用 PHP 将信息从 MySQL 数据库发送给 Android 用户。当我使用本地主机并且我的应用程序收到通知时,我的代码运行良好,但是当我使用在线免费托管 (000webhost) 时,我收到以下错误:
警告:curl_setopt() [function.curl-setopt]:第 24 行 /home/a2275966/public_html/send_notification.php 中的 curl 配置选项无效 第 24 行包含以下代码:
curl_setopt($curl_session,CURLOPT_IPRESOLVE,CURL_IPRESOLVE_V4);
我尝试使用CURL_IPRESOLVE_V6 或CURL_IPRESOLVE_WHATEVER,但没有成功。
这是托管网站的限制,还是我的代码中缺少某些内容?免费主机上的 curl 版本为7.15.5,PHP 版本为5.2.17。
这是我的代码:
<?php
require "init.php";
$message = $_POST['message'];
$title = $_POST['title'];
$path_to_fcm='https://fcm.googleapis.com/fcm/send';
$server_key="AIzaSyBIUnk81EnIIrrlM1FfSxVCHPGqptuf3FQ";
$sql="select fcm_token from fcm_info";
$result=mysqli_query($con,$sql);
$row=mysqli_fetch_row($result);
$key=$row[0];
$headers= array(
'Authorization:key=' .$server_key,
'Content-Type:application/json'
);
$fields = array('to'=>$key,
'notification'=>array('title'=>$title,'body'=>$message));
$payload=json_encode($fields);
$curl_session=curl_init();
curl_setopt($curl_session,CURLOPT_URL,$path_to_fcm);
curl_setopt($curl_session,CURLOPT_POST,true);
curl_setopt($curl_session,CURLOPT_HTTPHEADER,$headers);
curl_setopt($curl_session,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl_session,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($curl_session,CURLOPT_IPRESOLVE,CURL_IPRESOLVE_V4);
curl_setopt($curl_session,CURLOPT_POSTFIELDS,$payload);
$results=curl_exec($curl_session);
if($results)
echo "donne";
else
echo "nnnooo";
mysqli_close($con);
?>
【问题讨论】:
-
你的 php 使用什么 curl 库?
ipresolve添加到 curl 7.10.8 -
除了@MarcB提到的,你还需要PHP 5.3+
-
@MarcB curl 7.15.5
-
当前 PHP 为 PHP 版本:5.2.17 @apokryfos