Как выполнять запросы cURL PUT с помощью дескриптора файла памяти php: //? - PullRequest
4 голосов
/ 27 июля 2011

Я использую сторонний класс PHP для доступа к API, он получил следующий код:

$fh = fopen('php://memory', 'w+');
fwrite($fh, $xml);
rewind($fh);
$ch = curl_init($req->to_url() );
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_INFILE, $fh);

В последней строке, т.е. это:

curl_setopt($ch, CURLOPT_INFILE, $fh);

Я получаю ошибку:

Предупреждение: curl_setopt () [function.curl-setopt]: не может представлять поток типа MEMORY как STDIO FILE *

Что я делаю не так?

1 Ответ

13 голосов
/ 27 июля 2011

Ваш дескриптор файла памяти открыт только для записи (w +). Добавить чтение, например попробуйте установить rw+ для дескриптора файла.

Альтернативой может быть использование php://temp вместо памяти. Это приведет к записи во временный файл, если недостаточно памяти.

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