2017-02-18 44 views
-1

理由は私の目標:
私は「ユーザープロファイル - >インデックス・ページ」に直接ので、登録が成功であるとき、私は、登録フォームを作成したいです。PHP - 新しいフォルダと新しいファイルを作成することができませんLinuxの許可

ディレクトリ:
登録ページで:MyProjectと/アカウント/ create.php
ユーザプロファイル - >インデックスページ内:それはどのように動作するかでmyproject /プロフィール/ nameuser/index.phpを

ステップ:成功は、プロファイルをフォルダに移動すると、その後、作成
4.
1.
塗りつぶし登録フォーム
2.失敗
3.場合は、フォーム送信、成功するまで再び埋めます新しいユーザーのためのユニークな新しいフォルダ(それはユーザーフォルダを意味します)、次にユーザーフォルダにインデックスページを作成し、各ユーザーに各インデックスページにアクセスさせます。

私の問題:
私はPHPでの方法ます。mkdir()を使用しようとしていますが、Linuxのいずれかの設定が解決する場合は許可が
を拒否されたので、それが解決することはできませんが、私は何を知りません

マイコードの方法です:

if (empty($err)) { 
    if ($insert_stmt = $mysqli->prepare("INSERT INTO member (uname, mail, pwd) VALUES (?, ?, ?)")) { 
     $insert_stmt->bind_param('sss', $uname, $mail, $pwd); 
     if (! $insert_stmt->execute()) { 
      header('Location: ../error.php?err=Registration failure: INSERT'); 
     } 
    } 
    $directory = "../profile/$uname"; 
    if(!is_dir($directory)) { 
     mkdir("$directory"); 
     touch('$directory/index.php'); 
    } 
    header('Location: $directory . index.php'); 
} 

は、誰かが私の問題を解決するために私を助けることができる願っています。ディレクトリを作成するために進む前に

答えて

0

は、まだ許可777

chmod -R 777 myproject/ 

ともしばらくして、それをしようと動作しない場合は700または777

chmod -R 755 myproject/ 

にプロジェクトフォルダのパーミッションを変更してみてくださいmkdirでディレクトリを作成すると、同時にアクセス権を割り当てる必要があります。

mkdir("$directory", 0755); 
+0

あなたがディレクトリを作成できない場合は、ディレクトリのアクセス権を変更できることを確かめていますか? – reza

+0

変更されている権限はプロジェクトフォルダのものです。また、私は答えを編集し、新しいmkdir()を追加しました。機能をほとんど変更しません。 –

+0

これは777で動作しますが、その安全性は何ですか? – drisoel

0

通常、サーバーはマシン上のユーザーアカウントとは異なるユーザーアカウントで実行されます。 Apacheはファイルを読んでクライアントに送信することができますが、ファイルに対する書き込み権限はありません。

オプション:

オプション一つは、あなたがhttp://php.net/manual/en/function.chmod.phpを使用して、書き込み可能なフォルダにするが、これはセキュリティ問題することができ、彼らは自分のユーザーフォルダ内の任意の777のフォルダを見つけた場合、いくつかのホストが500(内部の)エラーを提供します。 1つのトリックは、chmodコマンド(0777)を使用して、書き込み後のファイルを再chmodの(0755または0644)を書くことです。あなたが 'コード'のリードを必要とする場合はlinuxの許可を確認してくださいhttps://www.linux.com/learn/understanding-linux-file-permissions。あなたはそれがあなたのためhaappend行う権利コードを提供していないが、それは別のオプションは、このグループに書き込み権限を与えるグループの広告にあなたとApacheを追加することですが、それは次のようになり

$perm=substr(sprintf('%o', fileperms('../profile/')), -4); //current perm 

chmod ("../profile/", "0777"); //make the parent folder writable 

mkdir("$directory"); 
touch('$directory/index.php'); 

chmod ("../profile/", $perm); // make it back to old perms. 

ようなものになるだろう別のスタック交換サイト用。

また、フォルダとchown(onwershipを変更する)を作成してApacheに追加することもできますが、自分で書きたいときにはもう一度問題があります。

注:お使いのプロンプトに対するすべての解決方法は、オペレーティングシステムのファイルアクセス許可の対象です。そして、あなたは、あなたのユーザ、Apacheユーザ、そしてさらにいくつかのホストがphpのためにユーザを使用しているという違いを守る必要があります。

+0

あなたのコードに編集すると、次のように表示されます。警告:fileperms():stat failed警告:chmod():/では許可されていない操作警告:mkdir():許可が拒否されました/、警告:touch():ファイルを作成できません、警告:chmod(): / – drisoel

関連する問題