laimas,
index.php? должен быть в пути? |
Раньше было написано так
Надо удостовериться, что данные в нем меняются, то есть файл current.php я думал этот файл в планировщик прописать. а теперь запутался нужно index.php прописать? |
Цитата:
Перечитать этот пост, где я специально рассказывал, что такое индексный файл. Перечитать этот пост, где я рассказывал о вопросах связанных с получением курса валюты с ЦБ и почему нужна закрытая папка. Ответить на вопрос - какой файл и по какому пути должен быть указан в планировщике задач? |
laimas,
вот от current.php он находится в закрытом каталоге что бы его не открыли и не могли генерировать. и скрипт обращается только к моему домену что бы нельзя было запускать с других доменов. Верно? |
Цитата:
|
|
Цитата:
|
Сделано, что было описано тут - https://javascript.ru/forum/477434-post100.html?
В этой строке в индексном файле домен указан верно? header('Access-Control-Allow-Origin: http://domain_2'); А в JS в этой строке домен указан верно? $.getJSON("http://domain_1", function(data) { |
laimas,
теперь у меня на сайте и на домене должен курс поменяться в 0:00 ? |
Цитата:
wget -O /dev/null "http://имя домена/current/current.php" |
laimas,
https://pp.userapi.com/c840427/v8404...-HKT_Q-TXA.jpg https://pp.userapi.com/c840427/v8404...qWb0Jgc4mg.jpg Верно? А тут адрес моего второго сайта? header('Access-Control-Allow-Origin: http://domain_2'); |
Цитата:
|
А тут адрес моего второго сайта?
header('Access-Control-Allow-Origin: http://domain_2'); а то уже скоро 0:00 |
laimas,
уже 23:45 верно всё? |
|
Что не так то?
страница моего первого сайта где будет курс
<style>
/*общие правила для элементов отображающих курс*/
span[class|=rate] {
display: block;
text-align: center;
padding: 3px 0;
color: #000;
font-weight: bold;
}
/*правила для знака доллара*/
span[class|=rate]:before {
margin-right: 10px;
content: "$";
}
/*общие правила для стрелок*/
span[class|=rate]:after {
margin-left: 10px;
}
/*правила для стрелки вверх*/
.rate-1:after {
content: "▲";
color: #BC0101;
}
/*правила для стрелки вниз*/
.rate-0:after {
content: "▼";
color: #089301;
}
</style>
<div id="usd" class="">
<span id="current" class="rate-0"></span>
<span id="previous" class="rate-0"></span>
</div>
<script>
$.getJSON("http://h116641.s08.test-hf.su/", function(data) {
$.each(data, function(k, o) {
$('#'+k).text(o.value).attr('class', function() {
return this.className.replace(/\d/, o.rate)
})
})
});
</script>
index.php
<?
header('Access-Control-Allow-Origin: адрес сайта где выводить курс.ру');
header('Vary: Origin');
header('Access-Control-Allow-Methods: GET');
header('Content-type: application/json; charset=utf-8');
exit(file_get_contents('current/current.json'));
?>
.htaccess <Files *> Deny from all </Files> current.json
{"current":{"date":"8.2.2018","value":56.95,"rate" :"▼"},"previous":{"date":"7.2.2018","value":57.2 2,"rate":"▲"}}
current.php
<?
$dir = dirname(__FILE__);
chdir($dir);
libxml_use_internal_errors();
if($xml = simplexml_load_file('http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1='.date('d/m/Y', strtotime('-2 day')).'&date_req2='.date('d/m/Y').'&VAL_NM_RQ=R01235')) {
$last = round((float)str_replace(',', '.', current($xml->Record[0]->Value)), 2);
$usd_prev = round((float)str_replace(',', '.', current($xml->Record[1]->Value)), 2);
$usd_curr = round((float)str_replace(',', '.', current($xml->Record[2]->Value)), 2);
chmod($dir, 0777); //уточнить у хостера
file_put_contents('current.json',
json_encode([
'current' => [
'date' => date('j.n.Y'),
'value' => $usd_curr,
'rate' => intval($usd_curr > $usd_prev)
],
'previous' => [
'date' => date('j.n.Y', strtotime('-1 day')),
'value' => $usd_prev,
'rate' => intval($usd_prev > $last)
]
], JSON_UNESCAPED_UNICODE)
);
chmod($dir, 0644); //уточнить у хостера
}
?>
|
В этом файле current.json данные не изменились
|
когда в файле index.php прописано
exit(file_get_contents('current/current.json'));
то отображается его содержимое. А когда в index.php прописан полный путь
exit(file_get_contents('http://h116641.s08.test-hf.su/current/current.json'));
то в этом файле ничего не видно пусто |
Цитата:
|
Цитата:
|
laimas,
скрипт удалил второй, крон на других скриптах работает хорошо. Видно эту проблему никому не решить, очень много заморочек |
Цитата:
#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,
Версия php ![]() Запуск через браузер дал просто белый результат, всё пусто. |
не могу теперь вообще зайти в папку current
Пишет:ошибка доступа скачал папку, она пустая и удалить папку current нельзя |
Файлы папки. Инструкция в .htaccess уже закомментирована, можно вызывать файл из под браузера.
|
laimas,
как удалить ту папку теперь? Вдруг весь сервер полетит? |
Нужно удалить ту папку, не будет совпадать путь
|
Цитата:
Цитата:
Не надо ничего выдумывать. Загрузите файлы в папку и пробуйте. Если не будет работать, попробуйте заменить права папки на 700 (файлы папки тоже должны иметь эти права), в current.php строку chmod($dir, 0644); заменить на chmod($dir, 0700); И попробуйте с этими правами. |
laimas,
а что стой папкой делать, current? Я уже в поддержку написал, в неё зайти нельзя, удалить нельзя. Просто ваши файлы залить? |
Цитата:
|
Поместите в корень документов файл с этим кодом:
<?
chmod('current', 0700);
?>
назвав его как угодно, например f.php и запустите его из под браузера http://domain/a.php Будет ли после этого доступна папка? |
Каталог удалите не могу права доступа нашёл
|
laimas,
я скачал его и написано что размер 0 |
Цитата:
|
Цитата:
|
Востановил папку бекапом!
Так теперь что делать? |
Права доступа папки
![]() |
Цитата:
Далее разрешить доступ к папке (как было написано ранее) и запустить current.php браузером. Файл который в корневой каталог помещался (f.php) удалить. |
Не 755, а 700.
|
Закачал ваши файлы что дальше?
|
| Часовой пояс GMT +3, время: 09:29. |