Я пытаюсь создать уникальный счетчик попадания. Я «заимствовал» некоторый код из Интернета, но просто не мог заставить его работать. (Кстати, я самоучитель новичка.) Даже с помощью людей здесь я не мог заставить его работать. Поэтому я начал с нуля писать свой собственный код, переучивая заявления «f». Теперь у меня есть это, чтобы он считывал все IP-адреса в текстовом файле и сравнивал их с пользователями ip и выходил из цикла, если он уже был введен.Ошибки при попытке fwrite в текстовый файл
Теперь я пытаюсь открыть файл count, прочитать одну запись, увеличить ее на единицу и записать ее обратно в файл. Но это просто не сработает. Я нашел здесь еще несколько сообщений и попробовал, что они предложили, как команду «cmod» и все возможные номера, но ничего. Затем я нашел, как включить отчет об ошибках. (Что-то предлагалось раньше, но я не знал, как это сделать.) Теперь я получаю кучу ошибок, и я думаю, что на сервере есть что-то, что не позволяет мне писать в файлы. Вот код, который я использую, только для части приращения:
// прочитайте содержимое count.txt $ count_file = "count.txt";
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$handle = fopen($count_file, "r");
$old_count=fgets($handle);
echo "Old count = " . $old_count . "<br><br>";
fclose($handle);
// записываем содержимое count.txt
chmod($count_file, 0777);
$fp = fopen($count_file, 'ab');
if (false === $fp) {
throw new RuntimeException('Unable to open log file for writing');
}
$handle = fopen($count_file, "w");
$new_count = $old_count +1;
echo "New count = " . $new_count;
fwrite($handle, $new_count);
fclose($handle);
старый граф и новый отсчет дисплея правильно, но новый один не может записать в текстовый файл. Вот сообщения об ошибках, которые отображаются сейчас:
Warning: chmod() [function.chmod]: Operation not permitted in /home/users/tecitout/counter/fullarray1.php on line 50
Warning: fopen(count.txt) [function.fopen]: failed to open stream: Permission denied in /home/users/tecitout/counter/fullarray1.php on line 51
Fatal error: Uncaught exception 'RuntimeException' with message 'Unable to open log file for writing' in /home/users/tecitout/counter/fullarray1.php:53 Stack trace: #0 {main} thrown in /home/users/tecitout/counter/fullarray1.php on line 53
Я действительно не понимаю ошибок. Это проблема с сервером моего приятеля, или я так плохо умею писать код. Я ценю помощь.
Просто вопрос с разрешениями.Сервер вашего собеседника не дает вам прав на изменение этого файла. – jszobody
Спасибо @jszobody. Если я могу спросить, это что-то в его файле php.ini или глубже в настройках сервера? Это общий сервер с другой компанией, с которой он работает, но другой парень контролирует сервер. Благодарю. –
Скорее всего, это разрешения файловой системы Linux, не позволяющие процессу доступа Apache к этому файлу или папке. Где '$ count_file' находится на сервере? Возможно, вы сможете вставить его где-нибудь в другом месте, где вы можете писать. – jszobody