RuWeb.net Forum

создание файлов из PHP
Alexander - 18.3.2004 в 15:32

Как из файла PHP создавать новый файл PHP (или какой либо другой) на диске?


support - 18.3.2004 в 18:39

http://ru.php.net/manual/ru/ref.filesystem.php


Vic - 27.5.2004 в 15:06

$s1 = $my->PATH.$my->PATH_PROD;
if( !mkdir($s1) ) echo "<p>not created : ".$s1."</p>";
else {
echo "<p>created : ".$s1."</p>";
chmod ($s1, 0777);
}

$s1 = $my->PATH.$my->PATH_PROD."/test123";
if( !mkdir($s1) ) echo "<p>not created : ".$s1."</p>";
else {
echo "<p>created : ".$s1."</p>";
chmod ($s1, 0777);
}


Выдает:

created : /home/telexruw/somedir/prod
not created : /home/telexruw/somedir/prod/test123

второе сообщение непонятно. Скрипт один, права у него во время выполнения не изменяются. Как написать правильно создание второй директории?


support - 27.5.2004 в 20:25

Скрипт работает под пользователем nobody, и файлы и папки, созданные им соответственно принадлежат пользователю nobody, а не вашему unix-пользователю. А safe_mode запрещает доступ к файлам и папкам, принадлежащих не вашему unix-пользователю. Т.е. при safe_mode создавать папки через mkdir - бесполезно вообще.
Это один из немногих и самых больших минусов safe_mode.
Проблема эта трудно решаема, но решаема. Например, можно создавать папки из скрипта подстоединяясь на FTP.


Anonymous - 16.8.2004 в 11:38

почему бы не использовать mod_become или аналоги? это бы раз и навсегда решило множество проблем.


support - 10.9.2004 в 11:07

Цитата:
USE OF THIS MODULE MAY OPEN SECURITY EXPLOITS WITHIN APACHE AND ITS INSTALLED MODULES.

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


Anonymous - 19.10.2004 в 13:56

Ребята, я вам говорю - PHP скоро развалится, это избыточность!


DeDemon - 27.2.2005 в 20:35

А как из скрипта через ftp создавать файлы?

Можно ли под SafeMode переименовывать файлы? Это бы частично решило проблему создания файлов.


support - 27.2.2005 в 20:39

Сейчас у нас уже возможны (из пхп-скриптов) практически любые операции с файлами созданными пхп-скриптами, не смотря на safe_mode. Т.ч. через фтп создавать обычно ни к чему.
А так - смотрите в документации по пхп.

[Изменено 27.2.2005 от support]


DeDemon - 1.3.2005 в 21:33

Когда я создаю файл из PHP, он имеет разрешение 644. Будут ли в него писать скрипты (разрешение подходяшее?) ?


support - 1.3.2005 в 21:50

PHP-скрипты? смогут


DeDemon - 8.3.2005 в 01:04

Создаю файл из скрипта примерно с таким кодом:

$fd=fopen("newfile", "a";);
fwrite ($fd, $content);
fclose($fd);

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

В чем может быть проблема?


support - 8.3.2005 в 18:37

Что значит "раз, и уже не могут" ?


DeDemon - 8.3.2005 в 20:28

Я ошибся - скрипты в них могут писать, но изменить атрибуты невозможно.
"Раз - и не могут" - тоже ошибся :(
Это у старого хостера так происходило.
Сейчас атрибуты невозможно изменить с момента создания файлов таким образом. Я так понял это особенность Safe Mode.
Главное, что скритпы могут писать в эти файлы, так что проблему снимаю.


Mefisto - 9.3.2005 в 13:34

кстати, да, тоже заметил.
у файла созданного скриптом php невозможно изменить права

а также через ftp невозможно заменить созданный файл на закачиваемый с тем же именем

[Изменено 9.3.2005 от Mefisto]


support - 9.3.2005 в 14:03

ну так это естественно. Владелец-то файла - apache
чем создавали - тем права и меняйте - php-скриптом


DeDemon - 9.3.2005 в 20:37

Он умеет изменять права?
Подскажите как, пожалуйста.


Mefisto - 9.3.2005 в 21:04

php.net/chmod