cURL на MAMP не работает, но тот же скрипт работает на сервере с Apache - PullRequest
0 голосов
/ 28 января 2020

Я написал php скрипт, который входит в систему на сайте, переходит на вкладку c и извлекает файл xlsx.

Скрипт был написан и протестирован на MAMP и затем перемещен на рабочий сервер. (Apache). Он все еще работает на производственном сервере, но точно такой же сценарий не работает на MAMP (localhost).

Что изменилось: текущий MAMP 5.6 предыдущий был старше. Я также использую MacOS Catalina (новый компьютер).

Я проверил брандмауэр и протестировал в разных сетях и т.д. c. Я не могу найти проблему.

Любые предложения, пожалуйста?

Обновление: я не получаю никакой ошибки, он просто ничего не возвращает.

Функции, которые я использую для создания вызов cURL:


      $curl = curl_init($url);

      curl_setopt($curl, CURLOPT_HEADER, 0);
      curl_setopt($curl, CURLOPT_NOBODY, 0);
      curl_setopt($curl, CURLOPT_VERBOSE, 0);
      curl_setopt($curl, CURLOPT_HTTPHEADER, $login_request_headers);
      curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_jar_location);
      curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_jar_location);
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_POST, $post);
      curl_setopt($curl, CURLOPT_HTTPGET, $get);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, $return_transfer);
      curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
      curl_setopt($curl, CURLOPT_FOLLOWLOCATION, $follow_acction);

      return $result = curl_exec($curl);
      curl_close($curl);

    }

    public function request_post($url, $login_request_headers, $post, $get, $follow_acction, $return_transfer, $cookie_jar_location, $post_data) {

      $curl = curl_init($url);

      curl_setopt($curl, CURLOPT_HEADER, 0);
      curl_setopt($curl, CURLOPT_NOBODY, 0);
      curl_setopt($curl, CURLOPT_VERBOSE, 0);
      curl_setopt($curl, CURLOPT_HTTPHEADER, $login_request_headers);
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_jar_location);
      curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_jar_location);
      curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post_data));
      curl_setopt($curl, CURLOPT_POST, $post);
      curl_setopt($curl, CURLOPT_HTTPGET, $get);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, $return_transfer);
      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
      curl_setopt($curl, CURLOPT_FOLLOWLOCATION, $follow_acction);

      return $result = curl_exec($curl);
      curl_close($curl);

    }

Код для звонка:

//------call to login url------
  $site_url1 = "https://app.xyz.com/";
  $login_request_headers1 = [
    'Host: app.xyz.com',
    'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:69.0) Gecko/20100101 Firefox/69.0',
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language: en-US,en;q=0.5',
    'DNT: 1',
    'Connection: keep-alive',
    'Upgrade-Insecure-Requests: 1'
  ];

  $functions->request_get($site_url1, $login_request_headers1, 0, 1, 0, 0, $cookie_jar_location);

  $cookie_file_content1 = file_get_contents($cookie_jar_location);
  $strlen = strlen($cookie_file_content1);
  $cake_php = trim(substr($cookie_file_content1, $strlen-27));

//------call to POST login process------
  $site_url2 = "https://app.xyz.com/";
  $login_post_array = array("_method" => "POST", "data[User][username]" => SC_USER, "data[User][password]" => SC_PASS);

  $login_request_headers2 = [
    'Host: app.xyz.com',
    'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:69.0) Gecko/20100101 Firefox/69.0',
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language: en-US,en;q=0.5',
    'Referer: https://app.xyz.com/',
    'Content-Type: application/x-www-form-urlencoded',
    'Content-Length: '.strlen(http_build_query($login_post_array)),
    'DNT: 1',
    'Connection: keep-alive',
    'Cookie: CAKEPHP='.$cake_php,
    'Upgrade-Insecure-Requests: 1'
  ];

  $functions->request_post($site_url2, $login_request_headers2, 1, 0, 0, 0, $cookie_jar_location, $login_post_array);

//------call to GET client site ()------
  $site_url4 = "https://clients.xyz.com/";

  $login_request_headers4 = [
    'Host: clients.xyz.com',
    'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:69.0) Gecko/20100101 Firefox/69.0',
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language: en-US,en;q=0.5',
    'Referer: https://app.xyz.com/',
    'DNT: 1',
    'Connection: keep-alive',
    'Cookie: CAKEPHP='.$cake_php.'; loggedIn[username]=test%40email.com; loggedIn[password]=testpassword',
    'Upgrade-Insecure-Requests: 1'
  ];

  $functions->request_get($site_url4, $login_request_headers4, 0, 1, 0, 0, $cookie_jar_location);
...