2012-07-04 2 views
0

Я пытаюсь создать файл и написать сообщение в папке отладки:Создание текстового файла завершается с PHP

папка
function debug($report){ 
    $file="/debug/debug.txt"; 
    file_put_contents($file,$report,FILE_APPEND | LOCK_EX); 
} 

отладки находится в моем корневом каталоге. Но файл не создается. Почему?

+3

Установили ли вы правильные разрешения для этой папки 'debug'? – Lix

+0

Проверьте разрешение? – xdazz

+0

проверить разрешение? И разместите свою ошибку здесь – nXqd

ответ

2

Этот код откроет все разрешения для этой папки.

chmod('PATH_TO_FOLDER',0777); 

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

Здесь пока некоторые другие примеры, взятые из PHP инструкции - http://php.net/manual/en/function.chmod.php

<?php 
// Read and write for owner, nothing for everybody else 
chmod("/somedir/somefile", 0600); 

// Read and write for owner, read for everybody else 
chmod("/somedir/somefile", 0644); 

// Everything for owner, read and execute for others 
chmod("/somedir/somefile", 0755); 

// Everything for owner, read and execute for owner's group 
chmod("/somedir/somefile", 0750); 
?> 
+0

это способ написать: chmod ('/отладки», 0777); –

+0

Я уверен, что вам нужно пройти абсолютный путь. Попробуйте 'chmod ($ _ SERVER ['DOCUMENT_ROOT']. '/ Debug', 0777)' – Lix

-1

Ничего плохого в этом коде, если ошибки не показаны, может быть вызвано быть PHP конфигурации. См. Отчет об ошибках Error Report.

Вообще это может вызвано разрешения (см разрешения на папке отладки)

+0

Оба [сообщения об ошибках] (http://stackoverflow.com/questions/11325751/creating-a-txt-file-fails-with -php # comment14909483_11325751) ** и ** [разрешения] (http://stackoverflow.com/questions/11325751/creating-a-txt-file-fails-with-php#comment14909342_11325751). Пожалуйста, прочитайте сообщение, прежде чем пытаться ответить. – Lix

1

Это действительно кодициль к Lix «s ответа.

Самая частая причина для этого - когда вы используете скрипты под Apache с помощью mpd_php5, так как ваш php-процесс будет запущен как UID Apache (www-data или что-то еще). Однако по умолчанию ваш каталог отладки будет принадлежать вашей учетной записи с полномочиями 755.

Я предположил бы, что это плохая практика, чтобы установить права доступа 777, так как это позволит любому пользователю создавать файлы в каталоге, но вместо того, чтобы временно установить права доступа 777 затем использовать Q & D скрипт для создания debug/logs и установите его разрешения для 755, прежде чем вернуть каталог отладки в 755.

Вы найдете, что каталог debug/logs теперь является собственностью Apache UID и может быть написан любым процессом Apache.

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

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