PHP Chmod Проблема создания файлов - PullRequest
0 голосов
/ 30 декабря 2010

У меня следующая ситуация:

public_html - 755

=> аватар - 777

=> опрос - 755

Теперь, когдаЯ использую следующий код, я получаю сообщение об ошибке (Предупреждение: file_put_contents (../ test.php) [function.file-put-contents]: не удалось открыть поток: в XXX отказано в разрешении):

<?php
file_put_contents('../test.php','<?php');
?>

Но когда я использую приведенный ниже код, он будет работать просто отлично:

<?php
file_put_contents('test.php','<?php');
?>

(оба выполняются из 'avatar', с 0777)

Как я могу решить эту проблему

Ответы [ 2 ]

1 голос
/ 30 декабря 2010

Поскольку ваш сценарий выполняется из avatar, который имеет разрешение 0777 (чтение / запись / выполнение в мире), вы можете создать внутри него файл (т. Е. * 1004).*).

Если вы не можете создавать файлы в public_html (то есть: file_put_contents("../test.php")), это потому, что пользователь, выполняющий ваш скрипт (скорее всего, пользователь Apache), не является владельцемpublic_html (владелец, скорее всего, пользователь FTP).Поскольку 0755 означает, что только владелец может писать в каталог, другие могут только читать или выполнять из него.

Если у вас есть доступ к оболочке, вы можете использовать chown чтобы изменить владельца файла:

bash-4.1.5$ chown newuser public_html

Или вы можете chmod с более высокими разрешениями для не-владельцев, но вы должны быть осторожны с этим.

0 голосов
/ 30 декабря 2010

Я думаю, что невозможно записать в папку более высокого уровня, даже если у вас есть разрешение 0777.

Невозможно использовать chmod в этом каталоге, вам придется использовать FTP или что-то в этом роде.

...