Сообщение от spinastr
|
Видно эту проблему никому не решить, очень много заморочек
|
Нет никаких заморочек, код очень простой. Можно запустить его из браузера для тестирования. Для этого на время теста кода сделать папку current доступной для внешнего доступа. Сделать это просто - закомментировав инструкцию в .htaccess. Откройте .htaccess на редактирование и перед строкой Deny from all поставьте решетку:
#Deny from all
Сохраните файл.
Примечание: этот файл вообще может иметь только эту одну строку, это будет равнозначно
<Files *>
Deny from all
</Files>
Теперь запустить скрипт запроса к ЦБ браузером - http:/domain_name/current/current.php.
Если будут ошибки, то они будут выведены в бразуер (правда в зависимости от настроек РНР на сервере не все их уровни могут выведены, но и это не проблема, можно определить их вывод на время теста). Причин ошибок, которые связаны только с сервером конкретным, может только две:
1) Права на папку, то есть в строках задания прав, о чем ранее говорилось: chmod($dir, 0777); и chmod($dir, 0644); Решается обращением в техподдержку.
2) На сервере РНР версии ниже 5.4. В этом случае будет ошибка по поводу объявления массива - []. В этом случае код записи полученных курсов в файл current.json переписать так:
file_put_contents('current.json',
json_encode(
array(
'current' => array(
'date' => date('j.n.Y'),
'value' => $usd_curr,
'rate' => intval($usd_curr > $usd_prev)
),
'previous' => array(
'date' => date('j.n.Y', strtotime('-1 day')),
'value' => $usd_prev,
'rate' => intval($usd_prev > $last)
)
))
);
Все, более в коде файла current.php нет ничего, что вызывало бы проблемы. JSON_UNESCAPED_UNICODE - это константа, которая указывает не кодировать UTF как \хххх, а представлять как есть. Это было существенно для передачи стрелок в json, чтобы видеть их, а не юникод. Данная константа функции json_encode доступна в РНР с версии 5.4. Но ее наличие и в ранних версиях проблем у функции json_encode не вызовет - значение неопределенной константы равно NULL. Так как в последнем варианте сервер возвращает не символы стрелок, а integer и jsjon не имеет строк на русском, то наличие константы не нужно и она удалена.
Сделайте изменения указанные выше в коде current.php и опять запустите его браузером. Файл current.json изменяется, принимает курс от ЦБ?
Удалите решетку в .htaccess у Deny from all и сохраните файл, опять закрыв папку current.
Все, более никаких проблем с кодом быть не может. Далее проблемы могут быть только с cron.