Показать сообщение отдельно
  #142 (permalink)  
Старый 11.02.2018, 00:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от 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.

Последний раз редактировалось laimas, 11.02.2018 в 00:40.
Ответить с цитированием