Intereting Posts
php foreach, почему быстро использовать пропуск по ссылке массива? Показывать пользовательский аватар по умолчанию вместо gravatar Удалить родительский элемент, сохранить все внутренние дочерние элементы в DOMDocument с помощью saveHTML XDebug, как отключить удаленную отладку для одного .php-файла? Многопользовательский PHP SaaS – Разделяйте БД для каждого клиента или группируйте их? exec Exit Code Значение для 11 Ошибка при использовании IMAP в PHP? Ошибка при реализации очереди сообщений с использованием redis, ошибка при использовании BLPOP Контрольный массив php для числа CodeIgniter переименуйте файл вложения электронной почты php-скрипт анализирует контент из RTE (tt_news), но внутренние ссылки не отображаются как говорящий URL-адрес Необходимо предотвратить повторное выражение PHP regex str_ireplace не работает с не-ASCII charecters Обнаруживать SSL, когда прокси * всегда * утверждает, что безопасное соединение Как интегрировать MoneyBookers в веб-приложение на PHP?

Отправка данных POST с помощью curl и php

Поздравил.

Итак, я запускаю Fedora Core 8 на Amazon EC2. Я установил httpd, php5 и libcurl и кучу других вещей. Казалось, что он работает отлично, но потом я понял, что данные POST не отправляются зависанием в моих php-скриптах. Тот же запрос в командной строке работает tho. Я также запускал те же сценарии php на своей локальной машине (Win XP) и другой удаленной машине (Ubuntu), и они работают нормально, данные POST отправляются, но не на FC8. Требуется ли какая-либо специальная конфигурация? Какие-либо проблемы с файерволом?

Вот код PHP:

error_reporting(E_ALL); $ch = curl_init("http://foller.me/tmp/postdump.php"); curl_setopt ($ch, CURLOPT_POST, true); curl_setopt ($ch, CURLOPT_POSTFIELDS, "something=somewhere"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_NOBODY, 0); $response = curl_exec($ch); echo $response; curl_close($ch); 

Вот соответствующая команда curl:

 curl -d "something=somethingelse" http://foller.me/tmp/postdump.php 

Я также нашел соответствующую запись в apache error_log, и вот что я придумал:

 * About to connect() to foller.me port 80 (#0) * Trying 75.101.138.148... * connected * Connected to foller.me (75.101.138.148) port 80 (#0) > GET /tmp/postdump.php HTTP/1.1 Host: foller.me Accept: */* < HTTP/1.1 200 OK < Date: Tue, 07 Jul 2009 10:32:18 GMT < Server: Apache/2.2.9 (Fedora) < X-Powered-By: PHP/5.2.6 < Content-Length: 31 < Connection: close < Content-Type: text/html; charset=UTF-8 < * Closing connection #0 

Данные POST не отправляются, см.? Есть идеи?

Спасибо заранее всем. ~ K.

Похоже, что это вызывает запрос POST для GET:

 curl_setopt($ch, CURLOPT_NOBODY, 0); 

Удалите эту строку, и она работает.

CURLOPT_NOBODY

Параметр, отличный от нуля, указывает библиотеке, что она не включает в себя часть тела. Это относится только к протоколам, которые имеют отдельные части заголовка и тела.

Не специалист в этой области, но у меня есть собственный рабочий код, который работает несколько иначе. Может быть, это поможет

 // Open the cURL session $curlSession = curl_init(); // Set the URL curl_setopt ($curlSession, CURLOPT_URL, $url); 

Сначала он curl_init () устанавливает URL-адрес, а затем …

 $rawresponse = curl_exec($curlSession); 

т.е. я понятия не имею, но, возможно, установление URL-адреса после того, как оно имеет какое-то значение …?

Также видел этот пост, где он предлагает отправлять почтовые поля в виде массива вместо строки