Как я даю доступ для записи PHP к каталогу?

Я пытаюсь использовать PHP для создания файла, но он не работает. Я предполагаю, что это вызвано тем, что это не имеет доступа для записи (это всегда была проблема прежде). Я пытался протестировать, если это было проблемой путем создания папки chmod 0777, но это только что закончило тем, что заставило каждый сценарий в том каталоге возвратить 500 сообщений об ошибке, пока я не возвратил его. Как я даю доступ для записи PHP к своей файловой системе, таким образом, это может создавание файла?

Править: Это размещается на Hostgator, совместно использованном, размещая использование Apache.

Редактирование 2: Кто-то попросил код: код является сценарием изображения GD. Я знаю, что остальная часть его работает как ранее, я создавал изображение каждый ime, которым это назвали. Теперь я пытаюсь создать их, когда новый текст добавляется, и сохраните их к папке. Строка записи, которую я имею: imagejpeg (пустой указатель, $file, 85);

Я также создал тестовый файл, чтобы проверить, был ли это просто поврежденный сценарий (главным образом скопированный с tizag): http://gearboxshow.info/rkr/lesig.jpg/testfile.txt (я не знаю, отправить ли код здесь правильно. Вот содержание Сценария PHP минус теги PHP.)

Это возвращается 13,13,1 (отдельные строки), таким образом, выглядит, как будто это думает, что записало что-то, но testfile.txt является пробелом (я загрузил пустой), или не существующий (если я удаляю его).

Редактирование 3: сервер выполняет CentOS.

66
задан Wim Coenen 27 March 2011 в 21:34
поделиться

3 ответа

Простой способ - позволить PHP самому создавать каталог в первую очередь.

<?php
 $dir = 'myDir';

 // create new directory with 744 permissions if it does not exist yet
 // owner will be the user/group the PHP script is run under
 if ( !file_exists($dir) ) {
     mkdir ($dir, 0744);
 }

 file_put_contents ($dir.'/test.txt', 'Hello File');

Это избавит вас от проблем с правами доступа.

54
ответ дан 24 November 2019 в 14:59
поделиться

Вы можете изменить права доступа к папке с помощью PHP chmod (). Более подробная информация о том, как использовать эту команду, находится здесь: http://php.net/manual/en/function.chmod.php

Если вы получаете ошибку 500 при установке разрешений на 777 (всемирная запись) , то это означает, что ваш сервер настроен на предотвращение выполнения таких файлов. Это сделано из соображений безопасности. В этом случае вы захотите использовать 755 в качестве наивысших разрешений для файла.

Если есть файл error_log, созданный в папке, где вы выполняете документ PHP, вы захотите просмотреть несколько последних записей. Это даст вам представление о том, где происходит сбой сценария.

Для помощи в работе с файлами PHP я использую http://www.tizag.com/phpT/filewrite.php в качестве ресурса.

4
ответ дан 24 November 2019 в 14:59
поделиться

Установите владельцем каталога пользователя, запускающего apache. Часто никто на linux

chown nobody:nobody <dirname>

Таким образом, ваша папка не будет доступна для записи всем, но все же будет доступна для записи для apache :)

33
ответ дан 24 November 2019 в 14:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: