Я закодировал PHP
скрипт для имитации веб-браузера. В основном, его задача - fetch
Url
, сохранить связанные cookies
и проанализировать его, чтобы получить некоторые данные.
Он работал хорошо до понедельника днем, но неожиданно он больше не хранит cookies
в требуемом каталоге. Я предполагаю, что мой код не обновлялся и не изменялся.
В каталоге, куда должны быть CHMOD 755
cookies
, есть CHMOD 755
.
Вот код, который я использую до сих пор:
$options = array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_HEADER => 0,
CURLOPT_FAILONERROR => 1,
CURLOPT_USERAGENT => $this->user_agent,
CURLOPT_CONNECTTIMEOUT => 30,
CURLOPT_TIMEOUT => 30,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_MAXREDIRS => 10,
CURLOPT_AUTOREFERER => 1,
CURLOPT_COOKIESESSION => $reset_cookies ? 1 : 0,
CURLOPT_COOKIEJAR => $this->cookies_file,
CURLOPT_COOKIEFILE => $this->cookies_file,
CURLOPT_SSL_CIPHER_LIST => 'TLSv1',
);
// Add headers
if (isset($custom_headers))
{
$options[CURLOPT_HTTPHEADER] = $custom_headers;
}
// Add POST data
if (isset($post_data))
{
$options[CURLOPT_POST] = 1;
$options[CURLOPT_POSTFIELDS] = http_build_query($post_data);
}
// Attach options
curl_setopt_array($this->curl, $options);
// Execute the request and read the response
$content = curl_exec($this->curl);
// Handle any error
if (curl_errno($this->curl)) throw new Exception(curl_error($this->curl));
return $content;
Чтобы создать файл cookie
на основе текущего ID
сеанса, я использую этот код:
// Create a cookie file
$this->cookies_file = dirname(__FILE__) . '/../cookies/' . $this->session_id .'.cookie';
if (!file_exists($this->cookies_file)) file_put_contents($this->cookies_file, '');
Знаете ли вы, что и почему это происходит? Кроме того, он работает отлично под WAMP
.
Решение заключалось в том, чтобы установить разрешения для cookies directory
на 644
.