PHP запись файла и установить разрешение - PullRequest
2 голосов
/ 08 марта 2011

Я пытаюсь создать php-файл, который я могу редактировать сразу, не устанавливая вручную разрешения.

Я пытаюсь это ...

<?php

$var = '<?php $mycontent = new Content(); echo $mycontent->block($p_name);?>';

$myFile = "testFile.php";

$fh = fopen($myFile, 'w+') or die("can't open file");

$stringData = $var;

fwrite($fh, $stringData);

fclose($fh);

?>

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

Заранее спасибо

Mauro

Ответы [ 3 ]

13 голосов
/ 08 марта 2011

Да, вы можете благодаря PHP CHMOD

// Read and write for owner, read for everybody else
chmod("/somedir/somefile", 0644);
3 голосов
/ 28 октября 2018

Поскольку этот аспект не был рассмотрен в предыдущих ответах, я добавлю его сюда:

chmod() будет принимать только строку пути в качестве 1-го аргумента. Поэтому вы не можете попытаться перейти к ресурсу, который был открыт с помощью fopen(), в данном случае $fh.

Необходимо fclose() ресурс, а затем запустить chmod() с путем к файлу. Поэтому правильной практикой будет сохранение filePath в переменной и использование этой переменной при вызове fopen(), а не передача ей прямой строки в первом аргументе.

В случае примера кода в ответе это будет просто означать выполнение chmod($myfile, 0755) (код разрешения - только пример и, конечно, будет другим).

полный код после исправлений:

<?php

$var = '<?php $mycontent = new Content(); echo $mycontent->block($p_name);?>';

$myFile = "testFile.php";

$fh = fopen($myFile, 'w+') or die("can't open file");

$stringData = $var;

fwrite($fh, $stringData);

fclose($fh);


// Here comes the added chmod:
chmod($myFile, 0755);
?>
1 голос
/ 08 марта 2011

Php имеет chmod , работает так же, как версия для Linux.

...