Итак, у меня есть этот PHP-скрипт, который вызывает REST API с curl. URL в основном выглядит следующим образом:Curl в PHP vs Curl Command Line
https://firewall1/api/?type=config&action=set&xpath=/config/devices/entry[@name='localhost.localdomain']/vsys/entry[@name='vsys1']/rulebase/security/rules/entry[@name='RULENAME']&element=<disabled>no</disabled>&key=APIKEY
ответ возвращается как успех, но изменение не на самом деле сделаны в брандмауэре, который кажется странным. Если я возьму и запустил этот же URL-адрес с зависком командной строки, он работает так, как ожидалось.
curl -v -k -g "https://firewall1/api/?type=config&action=set&xpath=/config/devices/entry[@name='localhost.localdomain']/vsys/entry[@name='vsys1']/rulebase/security/rules/entry[@name='RuleName']&element=<disabled>no</disabled>&key=APIKEY"
Мои локон настройки выглядеть следующим образом:
$failover1 = curl_init($enableFailover1);
$failback1 = curl_init($disableFailover1);
$commit1 = curl_init($commitFW1);
//set curl options
curl_setopt_array($failover1, array(
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_POST => TRUE,
CURLOPT_RETURNTRANSFER => TRUE
));
$responseFail1 = curl_exec($failover1);
$responseBack1 = curl_exec($failback1);
$responseCommit1 = curl_exec($commit1);
//failover and take approprate action for errors
if($responseFail1 === FALSE) {
die(curl_error($failover1));
} else {
//do some stuff
}
Запуск PHP скрипт возвращает тот же ответ, как скручивание, в командной строке, но результат не то же самое. Есть ли какой-то заголовок, который я не передаю, или что-то, что я должен сделать, чтобы это нормально работало? Я также должен добавить, что он работает, если я беру URL-адрес и вставляю его в браузер, и если я передам команду shell_exec. Спасибо за помощь!
Ответ завитка командной строки:
* Connection #0 to host firewall1 left intact
<response status="success" code="20"><msg>command succeeded</msg></response>
Ответ завиток в PHP скрипт:
<response status="success" code="20"><msg>command succeeded</msg></response>
Got it. Да, он отлично работает с shell_exec, поэтому я думаю, что я буду придерживаться этого. Спасибо за ответ! – CluelessJSMan