splfileobject не работает на веб-сервере Apache с Ubuntu 16.04 с php7.0

Я делал сайт, который имеет систему user-account-loggin, основанную на доступе к файлам .txt в php. Первоначально я протестировал большую часть кода на бесплатном веб-хостинге и получил функционал системы user-account-loggin, но когда я попытался перенести его на свой личный веб-сервер apache, функциональность некоторых моих php-кодов, кажется, были потеряны, и я не уверен, почему. В частности, я сузил его до функции splfileobject (), не возвращающей значения для переменной $ passfile. Я пропускаю некоторую библиотеку php, которая необходима для этого? Когда я посмотрел его, он сказал, что php7.0 имеет функцию splfileobject () и другие связанные функции как часть стандартной библиотеки php.

Вот часть моего кода

<?php
$username = $_POST["username"];
$password = $_POST["password"];

$account = file('usernames.txt');
$accountfix = str_replace("\n", "", $account);
$filepoint = array_search($username, $accountfix);

if ($filepoint !== false) {

$passfile = new SplFileObject('passwords.txt', 'r+');

$passfile->seek($filepoint);

$potentialpass = str_replace("\n", "", $passfile);

// check password
if ($password === $potentialpass) {
$_SESSION["username"] = $username;
$_SESSION["password"] = $password;
$_SESSION["loggedin"] = true;
$_SESSION["filepoint"] = $filepoint;
print "Logged in succesfully!";
}
else{
print "Incorrect Password";
}
}
else {
print "Incorrect Username.";
}

?>

По какой-то причине открытие такого файла работает нормально.

$account = file('textfiles/usernames.txt');

Тем не менее, я хочу иметь возможность искать определенную точку в файле паролей, которая имеет данные, параллельные файлу имени пользователя, чтобы сократить время вычислений, и для этого пришлось использовать объект splfileobject.

Спасибо

1

Решение

Я исправил проблему, по-видимому. Веб-серверу нужно было дать разрешение на чтение и запись в .txt файлах. Я никогда не получал ошибок по этому поводу. Я смог дать ему разрешение сделать это с помощью следующих команд в терминале Linux.

sudo chown -R www-data /var/www
sudo chmod -R u=rwx /var/www

Большое спасибо beno1990 на ubuntuforums.org
Вот нить, на которой я нашел это,
https://ubuntuforums.org/showthread.php?t=1089334

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]