Вопрос № 99448: Всем привет!
У меня вопросик появился. Точнее три. Вы уж простите, что, возможно не совсем, может быть, по теме данного раздела русфака, но все же. Первый связан с правами доступа к файлам и папкам. Конкретней. У меня на km.ru имеется сайт. Ну и ...
Вопрос № 99.448
Всем привет!
У меня вопросик появился. Точнее три. Вы уж простите, что, возможно не совсем, может быть, по теме данного раздела русфака, но все же. Первый связан с правами доступа к файлам и папкам. Конкретней. У меня на km.ru имеется сайт. Ну и на некоторых страницах имеется РНР-скрипты - счетчики. Все работает. Однако как-то раз я обнаружил, что один из моих счетчиков не работает. Странно. Год нормально работал, а тут... Начал разбираться. Оказалось, что у файла, в который записывается результат счетчика, поменялся chmod.
И у папки, в которой располагался счетчик. Ну я обратно выставил нужные мне значения. Через несколько месяцев ситуация повторилась. Вопрос: от чего это происходит. Это глюк хостинга, или я что-то не понимаю и не то делаю?
Вопрос второй. Я на своем сайте предоставляю места под ссылки. Участвую в системе sape.ru. Недавно узнал еще об одной подобной системе XAP.RU. Решил поучаствовать и в ней. Для участия в ней надо выполнить следующее:
==========================
1. Скачайте к себе на компьютер этот zip-архив
2. Распакуйте архив. Внутри архива будет лежать папка cache. Название папки ОБЯЗАТЕЛЬНО поменяйте на что-то длинное - минимум 12 символов - и сложное (даже система не будет знать ее адрес), изменив /cache/ в php-коде
3. Скопируйте эту папку к себе на сайт. Положите ее в корень вашего сайта.
4. Выставите права доступа 777 на эту папку (но не на файл tnx.php).
5. Вставьте на все страницы сайта следующий код, предварительно указав там правильное название папки (после установки кода на страницах будет пустое место, ссылки появятся только после их продажи и генерации):
<?php
//<div style=""font-size:" 16px;">Eсли вы видите эту строку в браузере, значит у вас в месте установки кода не исполняется php, уточните у разработчика или хостера, куда можно вставить php-код</div>
/*ОШИБКА<!--*/
$cache_dir = '/cache/'; // здесь ОБЯЗАТЕЛЬНО укажите свое название папки вместо cache, минимум 12 символов!
include_once($_SERVER['DOCUMENT_ROOT'] . $cache_dir . 'tnx.php');
$tnx = new TNX_n('mylog', $cache_dir); // ваш логин в системе
echo $tnx->show_link(1); // выводим первую ссылку
echo $tnx->show_link(1); // выводим вторую ссылку, желательно в другом месте страницы, ниже
echo $tnx->show_link(1); // выводим третью ссылку, желательно в другом месте страницы, ниже
echo $tnx->show_link(); // выводим оставшиеся, желательно в другом месте страницы, ниже
/*-->*/
?>
==========================
В общем, все понятно. Подобную операцию и для участия в SAPE.RU проделывал. Скачал архив, распоковал, закинул, предварительно переименовав папку cache, на сервер сайта. Поставил я и код на свой сайт. Загрузил в браузере страничку сайта. Однако вместо ссылок вывелась запись:
2007-08-19 23:40:23 - Ошибка, fsockopen не поддерживается, попросите хостера включить внешние коннекты или попробуйте CURL
У меня к Вам вопрос: что это за ошибка такая, и как от нее избавится? Обращался в тех.поддержку хостинга с этим, но от туда тишина.
Ну и третий вопрос. Как уже выше писал, у меня сайте имеются счетчики закачки файлов написанные на РНР. Не буду их описывать, так как это не важно. А важно то, что для закачки файла я использую РНР-функцию Header("Location: INSTALL.EXE"). На сервере сайта она прекрасно работает. Я же для тестирования сайта при его корректировки использую так называемый Джентльменский набор Web-разработчика "Денвер". Думаю, многие о нем слышали. Так вот, этот домашний сервер ругается на Header("Location:
INSTALL.EXE"):
==================
Warning: Cannot modify header information - headers already sent by (output started at z:homemysite.ruwww
001load.php:2) in z:homemysite.ruwww
001load.php on line 20
==================
Можно ли икак его избавить от этой привычки и заставить скачивать файл?
Отвечает: Nexus
Здравствуйте, Бурда Александр Михайлович!
1) это может быть связано с профилактическими работами на сервере, или чем-то еще. Т.е. к вашему скрипту никакого отношения не имеет - все вопросы к хостеру
2) на сервере запрещена ф-ция fsockopen(), довольно распространенная ситуация, и, на самом деле, вряд ли хостер вам ее разрешит. На счет CURL'а - я так понял у ХАРа есть какой-то альтернативный режим работы - пробуйте его, но это нужно ман по их модулю
3) HTTP-заголовки должны отсылаться до первой передачи данных браузеру. судя по сообщению вы на 2й строке файла load.php выводите что-то браузеру, а после этого на 20й пытаетесь менять http-заголовки. на сервере сообщение об ошибке может не выдаваться из-за того что отключены варнинги
Ответ отправил: Nexus (статус: 9-ый класс)
Ответ отправлен: 23.08.2007, 21:32 Оценка за ответ: 5 Комментарий оценки: Спасибо!
Отвечает: Azrr
Здравствуйте, Бурда Александр Михайлович!
1. Ваша проблем достаточно просто решается, если у вас есть соответствующие права(вернее у apache'a). Перед записью в файл вы можите выставить его права функцией chmod ("/somedir/somefile", 0777);
2. Это означает, что скрипт лезет в сеть через сокеты, а ваш хостер этого не разрешает, вам нужно либо попросить хостера включить сокеты(что маловероятно), либо как там написано воспользоваться CURL
3. Вы не должны выводить ничего в браузер, до функции HEADER(), оптимально она должна идти первой.
Ответ отправил: Azrr (статус: 3-ий класс)
Ответ отправлен: 24.08.2007, 02:28 Оценка за ответ: 5 Комментарий оценки: Спасибо!