2012-01-22 3 views
1

Можно создать дубликат:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in selectПереведен на новый хостинг/сервер - вопросы, связанные с разрешениями с Еореп() и FWRITE()

Когда пользователи регистрации учетной записи, их профиль должен быть автоматически создаются с использованием функции fopen():

$fh = fopen($profile_path.$username_file.'.php', "w"); 
fwrite($fh, $tpl_and_values); 
fclose($fh); 

Первый параметр для fopen(), когда заданы значения переменных, должно быть что-то вроде этого: profile/Auser.php. $tpl_and_values просто дает путь к файлу шаблона.

Вот ошибки я получаю: (. Registeraccount.php страница, где код выше проживает)

Warning: fopen(profile/givenusername.php) [function.fopen]: failed to open stream: Permission denied in /f5/tagzor/public/registeraccount.php on line 109 

Warning: fwrite() expects parameter 1 to be resource, boolean given in /f5/tagzor/public/registeraccount.php on line 110 

Warning: fclose() expects parameter 1 to be resource, boolean given in /f5/tagzor/public/registeraccount.php on line 111 

Я думаю, что это должно быть какое-то CHMOD разрешений. Значение Registeraccount.php равно 655, поэтому я не знаю, что может быть неправильным. Дать это 777 может быть плохой идеей, но я могу ошибаться.

+0

Какой пользователь владеет файлом, и какой пользователь выполняет веб-сервер? Вы установили его на 666 или 777 для тестирования? Кроме того, вы действительно не должны создавать файлы PHP динамически ... вы рискуете серьезно заблокировать свою систему. – Brad

ответ

2

Ваш вопрос подразумевает немало проблем с безопасностью.

E.g. Я надеюсь, что вы дезинфицируете свои данные - что, если пользователь регистрируется как «../index».

Однако ..


Право доступ Registeraccount.php не относится к этой ошибке.

$fh = fopen($profile_path.$username_file.'.php', "w"); Если предположить, что это строка 109 вашего сценария:

Вы должны убедиться, что $profile_path для записи. В начале make /f5/tagzor/public/profile запись в мире (777)

Вы должны найти ошибку.Если вы не измените владельца этой папки, скорее всего, права доступа должны оставаться 777, если это возможно, хотя:

  • Изменить владельца папки профиля на работы пользователя PHP (проверить владельца файлов в что папка)
  • Установка разрешений на 755

это будет по крайней мере, ограничить таким образом, что только пользователь веб-сервер может создавать файлы в этой папке.

+0

Эй, спасибо за ответ. Да, я дезинфицирую данные заранее. Однако профиль/является папкой. '$ Username_file' является фактическим файлом. Поскольку он динамически создается, я не могу изменить разрешения, не так ли? Вы говорите, что есть способ изменить права доступа к папке, и я должен это сделать? –

+0

Да, ваша проблема вызвана разрешениями папки. – AD7six

+0

Наверное, я отчасти из этого. Я пытался изменить разрешения в моем текстовом редакторе FTP, а не на FTP-сервере Filezilla ... Это исправлено. Не было ли проблем с безопасностью только с CHMOD 777 на всей папке? –

2

Registeraccount.php может быть 655 сейчас (на самом деле, вероятно, должно быть 644 *), но это будет принадлежать файлу. Он должен быть доступен для записи пользователем веб-сервера (www-data, apache, независимо от пользователя). Поэтому, если файл не принадлежит этому пользователю, ему необходимо будет изменить его владельца или группу для этого пользователя.

Если изменяется на групповой собственности пользователем веб-сервера, а затем установить разрешения 664.

# Set group ownership to the web server user 
chown currentuser.apache Registeraccount.php 

# Set write permissions for the group 
chmod 664 RegisterAccount.php 

* Что касается 655 - это будет означать, что файл исполняемым своей группой и другими, не являющихся собственниками. Скорее всего, вы не хотите, чтобы это было исполняемым, поэтому 644 - это соответствующее разрешение: чтение/запись владельцем файла, только для чтения группой и другими.

+0

Будет ли это идти в файле .htaccess? –

+0

@MarkLyons Нет, не он .htaccess. Для установки разрешений вам придется использовать панель управления вашего веб-хоста или учетную запись оболочки. Приведенный выше пример предполагает учетную запись оболочки, но если у вас есть только что-то вроде CPanel, вам нужно будет узнать, как установить право собственности оттуда. –

+0

Я использую почти бесплатную речь, поэтому я дам вам знать, смогу ли я ее найти. –

Смежные вопросы