2012-03-12 3 views
2

Я создаю собственный помощник в ./application/helpers Однако я получаю эту ошибкуПользовательские Помощники в CodeIgniter

Невозможно загрузить запрошенные хелперы файл/curl_helper

Это код в мой помощник файла:

function send(array $request, $url, $method) 
{ 
    //Validating if the required extensions are installed or not 
    if(!function_exists('json_encode')) return false; 
    if(!function_exists('curl_init'))  return false; 

    //Converting the array into required json format 
    $request = json_encode($request); 

    //Setting header required for requests 
    $header[] = "Content-type: application/json"; 
    $header[] = "Content-length: ".strlen($request) . "\r\n"; 

    //If the request method is get append the data into requests header 
    if($method == 'GET' or $method == 'get')  $header[] = $request; 

    //Initializing curl 
    $ch = curl_init(); 
    //Setting curl options for request 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); 

    //If the request method is post add the data we need to enable post 
    //request and define the data in post fields 
    if($method == 'POST' or $method == 'post') { 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $request); 
    } 

    //Executing the curl request and storing the result in a variable 
    $result = curl_exec($ch); 
    //Closing curl conneciton 
    curl_close($ch); 

    return json_decode($result); 
} 

И я загружая его в моей библиотеке, как:

$this->loader =& get_instance(); 
$this->loader->load->helper('curl'); 

Скажите, где я делаю неправильно?

UPDATE:
После попытки слишком много вещей, когда я поставил функцию в той же библиотеке, где я хочу, чтобы использовать я обнаружил, что есть ошибка в строке

curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 

когда я комментировать это функция линии работает нормально. Я не знаю, где ошибка, пожалуйста, помогите мне. И насколько я думаю, это причина ошибки загрузчика.

+0

Вы навели своего помощника 'curl_helper.php'? –

+0

Offcourse и я пробовал в любом случае средства, префикс префикса подкласса и его удаление. –

+0

попробуйте его без загрузчика '$ this-> load-> helper ('curl');' –

ответ

1

Ну, если вы используете "MY_helpername" то же проверить, если вы назвали файл на сервере, как «my_helpername», я не знаю причину, но CI будет искать my_helpername.php в папку хелперы, но не MY_helpername , У меня есть эта проблема в прошлом, и смена имени на моем ящике с MY_helpername до my_helpername работала для меня.

Надеется, что это помогает

+0

Да, я уже это сделал, не знаю, соответствует ли это стандартам или нет, но я, наконец, пришел к этому решению. –

3

Вы используете CodeIgniter> = v 2.0.3? Проверяя код загрузчика кода зажигания, я вижу только несколько способов, с которыми не выполняется вспомогательная загрузка:

  • Файл не указан правильно. ваш файл должен иметь расширение .php, т.е. curl_helper.php, но, похоже, вы уже проверили это.
  • Файл находится не в точном месте (приложение/помощники). Опять же, похоже, вы уже проверили это.
  • Файл недоступен для запуска веб-сервера. Разрешения?
  • префикс подкласса: Каков ваш параметр конфигурации для префикса подкласса? Это значение по умолчанию:

    $ config ['subclass_prefix'] = 'MY_';

    CI позволяет пользователям переопределять свои помощники по умолчанию, используя их префикс. Например, вы можете переопределить вспомогательный массив, имея файл MY_array_helper.php. Если случается так, что ваш помощник соответствует префиксу подкласса, тогда CI предполагает, что вы пытаетесь переопределить системный помощник и пытаетесь убедиться, что хелпер существует в каталоге системных помощников. Например, если у вас был помощник в application/helpers/MY_curl_helper.php, тогда CI проверил бы, что существует помощник в system/helper/curl_helper.php. Другими словами, убедитесь, что файл вашего помощника НЕ ​​соответствует префиксу подкласса.

+0

Я обновил свой вопрос, пожалуйста, проверьте и помогите мне, если вы можете ... –

+0

как вы называете функцию send()? Одна вещь, которую я вижу, может быть проблемой, заключается в том, что когда функция использует GET, она добавляет строку JSON в запрос $, но это приведет к недопустимым HTTP-заголовкам – RobertoP

-1

РЕШЕНИЯ: Для меня, переименуйте файл в нижнем регистре, и работает отлично.

+0

Существует еще один ответ (фактически принятый), в котором говорится то же самое, что вы только что сказали. –