ホームページ  >  記事  >  バックエンド開発  >  php がサーバー下にファイルを作成するときのファイル権限に関連する問題

php がサーバー下にファイルを作成するときのファイル権限に関連する問題

WBOY
WBOYオリジナル
2016-06-13 13:13:18959ブラウズ

PHP がサーバー上にファイルを作成するときのファイル権限の問題

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
$res = fopen('/usr/local/asg/configs/meet.conf','a+');
fclose($res);


meet.conf ファイルがローカル マシンに存在しない場合、作成できますが、ローカル マシン上では作成できません。 ls コマンドを使用します。 調べてみると、書き込み権限がなかったので、コードに判定を追加しました。
PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
if(!is_writable('/usr/local/asg/configs')) {
    system('chmod 777 /usr/local/asg/configs');
}
$res = fopen('/usr/local/asg/configs/meet.conf','a+');
fclose($res);


実行しても、まだ書き込み可能でした。作成できないので、再度改良しました
PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
if(!is_writable('/usr/local/asg/configs')) {
    system('chmod 777 /usr/local/asg/configs');
}
system('touch /usr/local/asg/configs/meet.conf');


実行しましたが、それでも動作しませんでした。再度回避して、パテを使用してログインしました。サーバーに接続し、コマンドラインを使用してディレクトリに入り、タッチで直接作成しました。なぜphpで実行すると失敗するのでしょうか? ? ?


-----解決策---------------------------- -
この操作を完了するには、php 関数 chmod を使用できると思います。

さらに、このディレクトリに対する php 実行アカウントのアクセス許可を与える必要があります。
------解決策---------
if (!is_dir('/usr/local / asg/configs')) {
mkdir('/usr/local/asg/configs');
chmod('/usr/local/asg/configs',0777);
}
------解決策------------------
PHP を使用して、PHP に権限のないディレクトリに権限を付与するにはどうすればよいですか?

国務省に入る許可がなければ、コネクションが見つからない限り、どんなに着飾っても入れないのと同じです
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。