New curlfile php не работает

New curlfile php не работает

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

Секрет
Теперь, когда вы уже наверняка второпях отправили свой запрос,
я расскажу вам простой секрет, который сэкономит вам уйму ожиданий,
даже если первый ответ по теме последуем сразу же.

Само собой я знаю что ответят мне тут же, и если я посмотрю
на сообщения на форуме, то пойму что в общем то я и не ошибаюсь.
Но еще я точно замечу, что очень мало тем, в которых всего два ответа :
вопрос автора и еще два сообщение вида Ответ + Спасибо

После этого приходится начинать уточнять этим неграмотным что мне надо.
Они что, сами читать не умеют? А уточнять приходится.
И иногда пока они переварят то что я им скажу проходит и не одна ночь..

Уверен что если бы я им сказал что у меня есть
фиолетовый квадрат, и нужно превратить его в синий треугольник
и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
но почему то кисточка не принимала цвет краски в банке,
то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
предложив её открыть, а не тратить еще стольник на жестянку.

Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
Что есть
Что нужно получить
Как я пытался
Почему или что у меня не получилось.

На последок как оно происходит на форумах

Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно.

Читайте также:  Архивация аутлук как настроить

Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12

Источник

Как исправить ошибку «CURLFile» не найдена?

Я пытаюсь реализовать marketo create file rest API. Но я получаю ошибку «Класс CURLFile не найден» из-за моей версии php. Поэтому, пожалуйста, помогите, как я могу использовать функцию CURLFile в нижнем php или является их другим эквивалентом той же функции. Пожалуйста, проверьте мой код ниже: —

6 ответов

Заменить $file->file = new CURLFile(«File.txt», «text/plain», «file»);

С $file->file = «@File.txt;filename=file;type=text/plain»;

В php 5.5+ вам нужно установить curl_setopt ($ch, CURLOPT_SAFE_UPLOAD, false);

PHP предоставляет определенные функции посредством загружаемых модулей. Чаще всего это касается вещей, требующих дополнительных библиотек, например libcurl. Чтобы использовать эту функциональность, в вашей системе должен быть установлен соответствующий модуль, и в вашем файле php.ini должна появиться инструкция для загрузки соответствующего модуля.

Способ установки модуля curl зависит от того, как вы установили PHP; это может быть так же просто, как установка пакета, или может потребоваться перекомпиляция всего PHP.

новый CURLFile («File.txt», «text / plain», «file»);

Требуется \ при создании объекта CURLFile, поскольку без \ он ищет это пространство имен локально, а не глобально.

Первым параметром должен быть путь к серверу.

Вы можете использовать функцию PHP realpath, чтобы добавить <> часть для вас.

Решение

Загрузка файла без класса CURLFile в PHP версии 0

Проверьте свою версию PHP. CURLFile работает только для версии PHP => 5.5

Если вы используете версию PHP> = 5.5 и фреймворк, например Laravel, не забудьте добавить «\» перед CURLFILE.

Источник

How to fix ‘CURLFile’ function not found error?

I am trying to implement marketo create file rest API. But i am getting ‘Class CURLFile not found’ error due to my php version. So please help how i can use ‘CURLFile’ funtion in lower php or is their any another equivalent of same function. Please check my below code:-

6 Answers 6

replace $file->file = new CURLFile(«File.txt», «text/plain», «file»);

with $file->file = «@File.txt;filename=file;type=text/plain»;

in php 5.5+ you need to set curl_setopt ($ch, CURLOPT_SAFE_UPLOAD, false);

If you are using PHP version >=5.5 and a framework like Laravel, remember to add «\» before CURLFILE.

Check you PHP version. CURLFile is only work for the PHP version => 5.5

Need a \ when creating the CURLFile object as without the \ it looks for this namespace locally rather than globally.

The first param needs to be the server’s path.

You could use the PHP realpath function to append the /var/www/html/ part for you.

Solution

PHP provides certain functionality by way of loadable modules. This is most often the case for things that require extra libraries, like libcurl. In order to use that functionality, the relevant module needs to be installed on your system, and a statement to load the relevant module needs to appear in your php.ini file.

How you install the curl module depends on how you installed PHP; it may be as simple as installing the package, or it may require that you recompile all of PHP.

Читайте также:  Не работает settings windows 10

File Upload w/o CURLFile Class in PHP Version

Not the answer you’re looking for? Browse other questions tagged php api curl marketo or ask your own question.

Linked

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.10.18.40487

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Источник

Решение проблемы с работой модуля cURL на PHP 5.6.1, PHP 5.5.17 и выше (на Windows)

Те, кто использует cURL, после обновлений на 5.6.1, 5.5.17 столкнулись с тем, что модуль cURL перестал работать. Проблема с тех пор не исчезла. Даже в последней на сегодняшней момент версии PHP 5.6.4 эта проблема сохранилась.

Как узнать, работает ли у вас cURL?

Создайте php файл и скопируйте туда:

Откройте его с сервера. Если на выходе что-то вроде:

Значит с cURL всё в порядке, если вместо этого ошибка PHP, значит проблема существует.

Во-первых, конечно же проверьте файл php.ini, найдите там строчку

И убедитесь, что перед ней не стоит точка с запятой.

Если всё так, а cURL не работает, то можно провести ещё один тест, для подтверждения необычности ситуации. Создайте ещё один php файл с содержанием:

Через поиск в браузере найдите cURL, если совпадение всего одно, значит модуль cURL не загружен:

При этом и Apache и PHP работают как обычно.

  1. Способ первый (не кошерный). Если у вас PHP 5.6.*, то возьмите версию PHP 5.6.0, оттуда возьмите старый файл php_curl.dll и замените его вместо вашего нового из версии, например, PHP 5.6.4. Для тех, у кого PHP 5.5.17 и выше, нужно взять этот же файл из PHP 5.5.16 и также его заменить. Проблема здесь одна — найти эти старые версии. Можно, конечно, покавыряться в http://windows.php.net/downloads/snaps/php-5.6, но лично я там не нашёл того, что мне нужно. Да и само решение какое-то не совсем кошерное.
  2. Способ второй (очень быстрый, но тоже не кошерный). Из каталога PHP скопировать файл libssh2.dll в каталог Apache24bin и перезапустить Apache.
  3. Способ третий (кошерный — кошерные люди аплодируют стоя). Нужно добавить вашу PHP директорию в PATH. Как это сделать очень хорошо расписано в официальной документации.

Вуаля, секция cURL на месте.

Почему так? Откуда взялась эта проблема? Ответа на этот вопрос нет, хотя уже описан механизм её возникновения.

Проблема связана, вроде, с тем, что 5.6.1 должен был выпущен с обновлённым libcurl 7.38.0. Но это доподлинно не известно, авторы PHP кивают на Apache, мол это там какие-то баги.

Механизм возникновения проблемы: если в системную PATH не включён каталог PHP, то когда служба Apache запускается, она не способна найти новый dll (libssh2.dll), который является зависимостью для php_curl.

Соответствующие баг репорты:

Fatal error: Call to undefined function curl_multi_init() in …

Вообще, проблемы с cURL на PHP были, кажется, если не всегда, то очень часто. В процессе гугления своей проблемы, я натыкался на темы, некоторым из которых было больше чем дюжина лет.

Читайте также:  Как настроить игровой монитор aoc

Кроме этого, гугление дало ещё несколько выводов:

В Интернете достаточно «инструкций для дибилов», в которых подробно, с картинками, рассказывают как раскомментировать строку extension=php_curl.dll в файле php.ini.

На официальном сайте PHP, в разделе по установке cURL, есть всего два предложения относительно системы Windows:

Для работы с этим модулем в Windows файлы libeay32.dll и ssleay32.dll должны существовать в системной переменной окружения PATH. Вам не требуется файл libcurl.dll с сайта cURL.

Я прочитал их десяток раз. Переключился на английский язык и прочитал ещё несколько раз на английском. С каждым разом всё больше убеждаясь, что эти два предложения написали животные, или кто-то просто попрыгал попой на клавиатуре — я не понимаю их смысла.

Ещё есть несколько каких-то сумасшедших советов и инструкций (некоторые я успел даже опробовать).

На сайте баг репортов ПХП я уже вплотную подобрался к разгадке, что нужно в системную переменную PATH включить каталог с PHP.

В общем, для тех, у кого проблема с cURL и кому нужно «в системную переменную PATH включить каталог с PHP», перейдите к уже названной выше инструкции http://php.net/manual/ru/faq.installation.php#faq.installation.addtopath. Там всё просто, а, главное, человеческим языком написано, что нужно сделать.

2 thoughts to “Решение проблемы с работой модуля cURL на PHP 5.6.1, PHP 5.5.17 и выше (на Windows)”

Способ второй (очень быстрый, но тоже не кошерный). Из каталога PHP скопировать файл libssh2.dll в каталог Apache24bin и перезапустить Apache.

Спасибо большое, второй способ очень быстро исправил проблему.

Источник

Как заменить CURLOPT_POSTFIELDS на CURLFile?

Мне нужно было создать некий скрипт, который бы работал по расписанию с группой ВКонтакте.
Порывшись в интернете нашёл прекрасно подходящее мне решение.
И на базе класса из этого решения создал свой скрипт.

Однако оказалось что начиная с версии PHP 5.5.0, префикс @ устарел и в принципе скрипт работает, но вадаётся следующее предупреждение:
Deprecated: curl_setopt(): The usage of the @filename API for file uploading is deprecated. Please use the CURLFile class instead in /. /_vk_post/primer.php on line 87

Для удобства понимания line 87 это:

Код класса целиком:

Перечитал мануалы и кучу разных вариантов как решить сию проблему, но то ли уж глаз замылился, то ли мозг вскипел, не понимаю как исправить это предупреждение. Вернее пока читаю мануал или совет вроде всё ясно, как сажусь исправлять получается полная хрень.

Может кто уже решал подобную проблему.

  • Вопрос задан более трёх лет назад
  • 6784 просмотра

curl_setopt ( $ch, CURLOPT_POSTFIELDS, array( ‘file1’ => ‘@’ . $file ) );

С 5.5 так делать нельзя.
Более старые версии PHP давно не актуальны, поэтому их поддерживать уже не нужно.

Так же вместо array() следует использовать [] : это делает код более читаемым, не рябит в глазах от ))) .

Однако использовать curl в своем коде — моветон.
Используйте Guzzle, его разработчики уже разобрались с технической частью, и вам это не нужно делать самому.

Источник

Оцените статью