投稿者 |
メッセージ |
|
< PHPプログラミング ~ フォルダ生成について |
|
時間:
火 2月 28, 2006 1:40 pm
|
|
|
|
はじめまして。
PHPの初心者ですが質問させて下さい。
フォルダの生成とその中にファイルのアップロードを行ないたいのですが
ローカルではうまくいくのにサーバーにアップするとエラーがでてきます。
以下エラー文
Warning: mkdir(./222): Permission denied in /var/www/html3/test/m/library_add.php on line 16
ディレクトリが作成できません
パーミッションの指示が必要なのでしょうか?
どのような指示を与えればよいのか教えてください。
宜しくお願いします。 |
|
|
|
|
|
|
|
時間:
火 2月 28, 2006 5:56 pm
|
|
|
|
ディレクトリを作成する位置のパーミッションを与えてあげないといけません
例えば、
aaa/ というディレクトリ以下に bbb を aaa/bbb のように作るのなら
aaaのパーミッションを777にする必要があります |
|
|
|
|
|
|
|
時間:
土 3月 04, 2006 11:31 am
|
|
|
|
すみません、パーミッションの与え方がよくわかりませんでした。
if(!file_exists($condition))
{
mkdir($condition) or die("ディレクトリが作成できません!\n");
echo "ディレクトリを作成しました\n<br>";
}
現在上記のように記述していますがどう変更すればうまくいくでしょうか?
よろしくお願いします。 |
|
|
|
|
|
|
|
時間:
土 3月 04, 2006 7:48 pm
|
|
|
|
mkdir関数をマニュアルで見ましょう。
パーミッション指定の引数があるはず |
|
|
|
|
|
|
|
時間:
土 3月 04, 2006 9:57 pm
|
|
|
|
mkdir関数を調べました。
フォルダの生成まではうまくいくのですが、その中にファイルアップが出来ません。
パーミッションも色々変更して試しましたがなぜか777にだけは指定できません。
705や755、などには変更できます。
下記のような設定の場合だと、755になります。
<?php
$ta = $_POST['ta'];
if ($ta == ""){
exit ("タイトルが入力されていません");
}
$condition = "./test/$ta";
if(!file_exists($condition))
{
mkdir($condition,0777) or die("ディレクトリが作成できません!\n");
echo "ディレクトリを作成しました\n<br>";
}
else
{
echo "同名のディレクトリがるためディレクトリを作成しませんでした\n";
}
$updir = "./test/$ta/";
$filename1 = $_FILES['pic1']['name'];
if($filename1 != ""){
if (copy($_FILES['pic1']['tmp_name'], $updir.$_FILES['pic1']['name']) == FALSE){
print("Upload failed...");
print($_FILES['upfile']['error']);
}else {
print("<b>" . $filename1 . "</b> uploaded!<br>");
}
}
またフォルダの所有者がapacheになっているようです。
これはなぜなのでしょうか? |
|
|
|
|
|
|
|
時間:
土 3月 04, 2006 11:07 pm
|
|
|
|
いろいろやってみて、以下の方法でフォルダを無事に777にすることができました。
mkdir($condition) or die("ディレクトリが作成できません!\n");
chmod ($condition, 0777);
しかし、やはり所有者がapacheになっています。
生成したフォルダにファイルをアップしたいのですが、フォルダのパーミッションは777になっても、アップロードがうまくいきません。
これは所有者がapacheになっているからなのでしょうか?
よろしくお願いします。 |
|
|
|
|
|
|
|
時間:
日 3月 05, 2006 12:24 am
|
|
|
|
プログラム実行者がapacheだから恐らく変えることは出来ません。
あらかじめ作っておく必要があるでしょうね。 |
|
|
|
|
|
|
|
時間:
日 3月 05, 2006 11:37 am
|
|
|
|
Anonymous wrote: |
プログラム実行者がapacheだから恐らく変えることは出来ません。
あらかじめ作っておく必要があるでしょうね。
|
あらかじめフォルダを作っておく、という意味でしょうか?
フォルダを生成し、そこにファイルをアップする、という作業はPHPでは不可能ということでしょうか?
何か他に手はないのでしょうか?
このアップしてやりたい事は・・・
同じ名前、例えば(index.html /index.gif/index.css)のファイルがあり、testというフォルダの中のローカルにおいてあります。同じようにtest2というフォルダがあります。
中身のファイル名は同じ(index.html /index.gif/index.css)です。
これをサーバーにアップしたいのですが同じフォルダにあげるとファイル名が同じ為上書きされてしまいます。
このようなフォルダを複数あげたいのです。
フォルダごとアップできればもっと簡単なのですが・・・。
何かいい案があれば、アドバイスよろしくお願いします。 |
|
|
|
|
|
|
|
時間:
日 3月 05, 2006 6:03 pm
|
|
|
|
アップロードの処理をPHPで行えば同じユーザなのでアップは出来ますよ |
|
|
|
|
|
|
|
時間:
火 3月 07, 2006 8:56 am
|
|
|
|
Anonymous wrote: |
アップロードの処理をPHPで行えば同じユーザなのでアップは出来ますよ
|
処理の方法があれば教えてください。
色々調べていますが、行き詰ってしまっています・・・。 |
|
|
|
|
|
|
|