невозможно опубликовать значения из внешнего источника в CodeIgniter 4

#php #codeigniter #php-curl #codeigniter-4

#php #codeigniter #php-curl #codeigniter-4

Вопрос:

Я пытаюсь опубликовать значения с помощью CURL в приложении на основе Codeigniter 4

но я получаю Maximum execution time of 60 seconds exceeded сообщение об ошибке.

здесь я использую код для публикации из внешнего источника

 $url = 'http://localhost:8080/api/add';
$myvars = 'name=helloamp;description=somedescription';

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $myvars);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $ch, CURLOPT_HEADER, 0);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec( $ch );
 

Я использовал следующее без curl

 $url = 'http://localhost:8080/api/add';
$data = array('name' => 'value', 'description' => 'value');
$options = array(
        'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencodedrn",
        'method'  => 'POST',
        'content' => http_build_query($data),
    )
);

$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
var_dump($result);
 

но ни один из них не работает

я дал исключение CSRF в filter.php (документация)

 public $globals = [
        'before' => [
                'csrf' => ['except' => ['api/add']]
        ]
];
 

вот код в Controllers/Api.php

 public function add(){
  
   return $_POST['name'] . $_POST['description'];
  
          
}
 

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

Комментарии:

1. 1 за предоставление хорошего тестового кода. Я запустил его на двух разных сайтах (виртуальных хостах), и он работает, или я получаю ответ об ошибке. Таким образом, проблема будет связана с вашим сайтом «Внешнего источника». Он делает что-то странное, и PHP потерялся и выполнил тайм-аут. Итак, что еще происходит с «внешним» сайтом?

2. внешний сайт @TimBrownlaw также является сайтом на базе CodeIgniter 4.

3. Возможно, вы страдаете от тайм-аута соединения. Чтобы проверить это — что произойдет, если вы попытаетесь напрямую получить доступ к localhost: 8080/ api/add через ваш браузер или создать другой метод, например, hello, который возвращает строку для ее проверки. Каков ответ?

4. @TimBrownlaw когда я получаю доступ к localhost: 8080 / api / add через браузер, он работает нормально. и я создал простой php-файл и выполнил приведенный выше код CURL, который работает нормально. единственное, что не работает на сайтах, основанных на codeigniter. ни с того же сайта, ни с другого внешнего сайта.