PHP curl rest client работает при запуске в командной строке, но не на веб-странице - PullRequest
0 голосов
/ 01 октября 2018

Я написал автономный скрипт php, который делает вызов с помощью curl.Скрипт отлично работает из командной строки (запускается как php скрипт из IDE netbean).Но когда я вставил тот же код в контроллер php и вызвал контроллер с веб-страницы, это не удалось.Ниже приведен код:

$data = '{"active":"true","state":["2" ,"1"],
"cat_item_Name":"IT Network Data Center",
"limit":2500,
"fields":["request","cat_item","number","active","state"],
"variables":"true", 
"children":"true",
childOptions":{"limit":100,
"fields":["number","description","active","assignment_group","assigned_to"]
}}';
//decoded json object
$jsonDataObject = json_decode($data, true);
try {
$base_url = 'https://anotherwebsite;
$curl = curl_init($base_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); //$jsonDataObject);
$headers = array(
'Content-Type:application/json',
'Authorization: Basic '. base64_encode("username:password") 
);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
//curl_setopt($curl, CURLOPT_USERPWD, "username:password");
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$curl_response = curl_exec($curl);

if ($curl_response === false) {
$info = curl_getinfo($curl);
curl_close($curl);
die('error occured during curl exec. Additioanl info: ' . var_export($info));
}
close($curl);

вывод неудавшегося запроса:

Array
(
[url] => https://anotherwebsite
[content_type] => 
[http_code] => 0
[header_size] => 0
[request_size] => 0
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0
[namelookup_time] => 0.224197
[connect_time] => 0.278377
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 0
[speed_download] => 0
[speed_upload] => 0
[download_content_length] => 0
[upload_content_length] => 0
[starttransfer_time] => 0
[redirect_time] => 0
)

В чем может быть причина его отказа при вызове с веб-страницы (например, кнопка, котораявызывает функцию action), тогда как она работает при запуске автономного скрипта из командной строки?

Заранее спасибо!

1 Ответ

0 голосов
/ 01 октября 2018

Как сказал Мохсин, вы пропустили одиночную кавычку в переменной $ base_url (строка 13 вашего примера кода).Так что в вашем случае синтаксис неверен.Вы можете использовать php -l filename.php для проверки правильности синтаксиса для указанного файла PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...