Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вывод курса валют (https://javascript.ru/forum/misc/72548-vyvod-kursa-valyut.html)

spinastr 10.02.2018 16:10

laimas,
скрипт удалил второй,

крон на других скриптах работает хорошо.

Видно эту проблему никому не решить, очень много заморочек

laimas 11.02.2018 00:19

Цитата:

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

spinastr 11.02.2018 01:50

laimas,

Версия php



Запуск через браузер дал просто белый результат, всё пусто.

spinastr 11.02.2018 01:55

не могу теперь вообще зайти в папку current

Пишет:ошибка доступа

скачал папку, она пустая

и удалить папку current нельзя

laimas 11.02.2018 02:04

Файлы папки. Инструкция в .htaccess уже закомментирована, можно вызывать файл из под браузера.

spinastr 11.02.2018 02:17

laimas,
как удалить ту папку теперь? Вдруг весь сервер полетит?

spinastr 11.02.2018 02:32

Нужно удалить ту папку, не будет совпадать путь

laimas 11.02.2018 02:46

Цитата:

Сообщение от spinastr
Вдруг весь сервер полетит?

С чего вдруг?

Цитата:

Сообщение от spinastr
Нужно удалить ту папку, не будет совпадать путь

С чего вдруг не будет, если имя папки не изменялось?

Не надо ничего выдумывать. Загрузите файлы в папку и пробуйте. Если не будет работать, попробуйте заменить права папки на 700 (файлы папки тоже должны иметь эти права), в current.php строку chmod($dir, 0644); заменить на chmod($dir, 0700);

И попробуйте с этими правами.

spinastr 11.02.2018 02:48

laimas,
а что стой папкой делать, current?

Я уже в поддержку написал, в неё зайти нельзя, удалить нельзя.

Просто ваши файлы залить?

laimas 11.02.2018 03:01

Цитата:

Сообщение от spinastr
Просто ваши файлы залить?

Если в папку нельзя зайти, то и загрузить в нее файлы не получится. Но коли входа нет, то откуда сведения, что в папке нет файлов?


Часовой пояс GMT +3, время: 03:57.