• ベストアンサー

ディレクトリの作成方法

基本的なことなのかしれませんが、 PHPでディレクトリの作成方法を教えてください。 以前、MKDIRで作成していたようなのですが、 メンテしたらできなくなりました。 前のPHPファイルからsubmitで呼び出していたのを location.hrefでURL呼出に変更したのですが、 mkdir処理自体は変更していません。 また、mkdirでコマンドを検索してもヒットしないのですが コマンド自体なくなったのでしょうか? もしなくなったのであれば、代わりのコマンド(処理方式)はありますか? 複数質問してもうしわけないのですが、宜しくお願いいたします。

  • PHP
  • 回答数3
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • taba
  • ベストアンサー率61% (349/567)
回答No.3

だとすると、最初の方が指摘されているように、変数の受け渡しの問題かもしれません。location.hrefということは、javascriptでしょうか。 >targetuslには、実行するPHPファイル名ほか必要な引数をセットしています とお書きですが、こちらだと変数はGETで渡されているのではありませんか? 渡し方は間違っていませんか? 受け取ったプログラムのほうで、正しくディレクトリ名が変数にセットされているかどうか確認してみてください(ファイルに書き出すとか画面に表示するとか)。

y-kawamura
質問者

補足

返信が遅れてもうしわけありませんでした。 他の作業で忙しくなってしまったもので。 せっかく返信して頂いたのに、作業が後送りになって しまいしまた。 もう一度仕切り直すことになりますので、 また何かありましたら、質問させて頂きます。 tabaさん返信ありがとうございました。

その他の回答 (2)

  • taba
  • ベストアンサー率61% (349/567)
回答No.2

mkdir関数のマニュアルは、参考URLのところです。 仕様変更はありません。 詳細は分からないのですが、ディレクトリを作成しようとしている場所に、作成権限が無いという可能性もありますね。チェックしてみてください。

参考URL:
http://www.php.net/manual/ja/function.mkdir.php
y-kawamura
質問者

補足

返事が遅れて申し訳ありません。 作成権限については、問題ないありませんでした。 現状、メンテする前のsubmitで実行しているものを実行すると、ディレクトリは作成されています。 実行する方法を変更するだけで、なにか変わるのでしょうか?

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

仕様の変更ではありません。 おそらくregister_globalsの問題だとは思いますが、これだけの情報では分かりません。 コードを書いてみたらどうですか?

y-kawamura
質問者

補足

返事が遅れて申し訳ありませんでした。 コードは以下の様に記述しています。 Apache :1.3.9 solaris :2.6 PHP4 <コード> $i = chdir("../docsvr/masters"); if( is_dir($docid) == false ) { // 存在しなければ、フォルダを作成(mode=777) $i = mkdir($docid,0777); } ※$docidは前処理で相対パス形式でディレクトリ名を作成しています。 記述内容については、特に変更しておらず、 このPHPファイルの実行の形式を変更しただけです。 このコードでも、submitで実行すると正常に処理されます。 mkdirなどのコマンドは、submitとlocation.href = targeturl(targetuslには、実行するPHPファイル名ほか必要な引数をセットしています)とでは、 権限とか違ってくるのでしょうか? PHPについて、まだ初心者なものでうまく伝わっているか、 自信がないのですが、宜しくお願いします。

関連するQ&A

  • PHPから外部コマンドを使ってファイルやディレクトリを新規作成するには?

    LinuxのFedora10で、PHPで外部コマンドを使ってサーバ内にディレクトリを新規作成したいのですができません。 /var/www/uuu内に、index.phpを設置し、その中の一部に以下のようなスクリプトを書いています。 <?php system("pwd"); system("touch fff"); system("mkdir ddd"); ?> system("pwd")は/var/www/uuuという結果を出してくれます。しかし、system("touch fff")やsystem("mkdir ddd")に関しては全く結果を出してくれません。 (PHP自体のエラーではないようです。) どうやら、外部コマンド自体はうまく機能してくれているみたいなのですが、ディレクトリやファイルを新規作成することができないようなのです。 /var/www内のディレクトリuuuのパーミッションを777にして、オーナーを一般ユーザにしてやってみても同様にうまくいきません。 どのようにすれば、PHPから外部コマンドを使ってファイルやディレクトリを新規作成することができるでしょうか? よろしくお願いします。

  • php実行権限以外でのディレクトリ(ファイル)作成方法

    webからphpを起動し、ディレクトリを作る場合、 phpが実行された権限ではない権限で作ることはできますか? 所有者がapacheとなるディレクトリを作りたいのです。 試してみたこと。 ・mkdirでディレクトリ作成後、chownで所有者変更が出来ればいいのですが、 root権限で動いているわけではないので無理でした。 ・シェルを作って、シェルの所有者をapacheにしてphpからコマンドラインで シェルを呼び出してみましたが所有者apacheで作られません。

    • ベストアンサー
    • PHP
  • C言語でのディレクトリ作成についての質問です。

    C言語でのディレクトリ作成についての質問です。 Linuxコマンドのmkdir -pコマンドのようなことをC言語で実現したいのですが、 mkdir(dir1/dir2)のようにすると、エラーになってしまいます。 mkdir(dir1)のように階層でないディレクトリを指定した場合はうまくいくのですが・・・ mkdir関数では階層ディレクトリを1度で作成できないのでしょうか。 ディレクトリをたどってmkdirを1回ずつ使用しなければいけないのか、 階層ディレクトリを指定できる関数がほかにあるのか、 ご教授お願いいたします。

  • ディレクトリーが作成されないのは何故でしょう?

    実は、下のように記述して実行してもディレクトリーが作成されずに、その原因がわからないでいます。 <?php parse_str($_COOKIE[abc]); $dirc=$ck_data1; print $dirc; if(!file_exists($dirc)){ mkdir("$dirc"); } ?> 一応ディレクトリー名を確認するために、途中でprint $dirc;を入れて ディレクトリー名を確認しましたが、問題ないようでした。 $dircという変数を遣わないで、直接ディレクトリー名を入れると 問題なくディレクトリーは作成されます。     ↓ <?php parse_str($_COOKIE[abc]); $dirc=$ck_data1; print $dirc; if(!file_exists("test")){  //←testというディレクトリー名を直接入れると、問題なくディレクトリーが作成される。 mkdir("test"); } ?> 何とか、ディレクトリ名を変数で受けて作成したいのですが、 なぜ、変数で受けることができないのかがわかりません。 どなたか、詳しい方よろしくご指導お願いいたします。

    • ベストアンサー
    • PHP
  • ある階層のすべてのディレクトリ内にディレクトリ作成

    例えば /home/hoge/aaaa/ /home/hoge/bbbb/ /home/hoge/cccc/ のようなディレクトリ構成で、 /home/hoge/aaaa/1/ /home/hoge/bbbb/1/ /home/hoge/cccc/1/ のように新たなディレクトリを作成したいと思い、 mkdir /home/hoge/*/1 としたところ、 mkdir: cannot create directory `/home/hoge/*/1': No such file or directory と怒られてしまいました。 こういった処理をしたい場合は、シェルスクリプトを組むしかないのでしょうか? 当方、シェルスクリプトには明るくなく学習時間を考えると、30ディレクトリ程度なので手作業でやった方が早いと思うので、そのようにしたいと思ったのですが、もしコマンドラインでうまいこと記述できる方法をご存知でしたら、ご教授願いたいです。 厚かましいですが、もし容易にシェルスクリプトで記述できるならコードを書いてくださると助かります。

  • ディレクトリ作成

    ユーザが入力した名前のファイルを作成するプログラムを作っているのですが、うまくいきません。 <html> <head> <title>データ受け渡し</title> </head> <body> <?php echo "<p>入力内容:".@$_POST["text1"]; $dir = /dir/$_POST["text1"]; mkdir($dir, 0777); ?> <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>"> <table> <tr> <td><input type="text" name="text1"></td> <td><input type="submit" value="送信" name="sub1"></td> </tr> </table> </form> </body> </html> サーバの dir というディレクトリ内に 入力された名前のファイルを作りたいのですが、エラーが出てしまいます。 よろしくお願いします。

    • 締切済み
    • PHP
  • 別ユーザ所有のディレクトリ内にファイル作成できない

    こんばんは。 タイトルのとおりですが、まずPHPでディレクトリを作成し、 その中にindex.htmlを作成しようとしているのですが上手くいきません。 PHPで作成したディレクトリの所有者はapacheになっているためかと思い、 実際にFTPを通して自分で作成したディレクトリの中にindex.htmlを作成したところ上手くいきました。 ディレクトリのパーミッションはいずれもスクリプトにより0777を指定しています。 このように、PHPのみでディレクトリを作成し、その中にファイルを作成する といったことが出来ずにいます。解決策等ございましたらお教えください。 参考までに、ソースを掲載しておきます。 これを設置するディレクトリのパーミッションは0777にしてみましたが、出力は「fopen error」になります。 <?php $path = "./dir/"; if(mkdir($path, 0, true)){ chmod($path, 0777); if($fp = fopen($path."index.html", "w")){ fputs($fp, $put); fclose($fp); print "Created!"; }else{ print "fopen error"; } }else{ print "mkdir error"; } ?>

    • ベストアンサー
    • PHP
  • phpでディレクトリが作れません

    php初心者です レンタルサーバで php.iniはいじれない環境です、 ディレクトリを作ろうとすると Warning: mkdir(testdir) [function.mkdir]: File exists in /home/xxxx/public/www/php/mkdir.php on line 14 とエラーが出ます <? $chk = mkdir("mydir"); $chkr = mkdir("mydir_r", 0777); // 読み込みのみを許可 if ($chk) { echo "mydir を作成しました。 <br>\n"; } if ($chkr) { echo "mydir_r を作成しました。<br>\n"; } ?> 間違ってますでしょうか ご指導願いたいです

    • 締切済み
    • PHP
  • ローカルホストでディレクトリ作成

    いつもお世話になっております。 現在、自宅でphpを使って開発をしています。 mkdirを使用してディレクトリを作成しようとしてるのですが、 サーバー上ではパーミッションの設定をその他に対して書き込み権限を与えればうまくいくのですが、 ローカルホスト上では「Permission denied 」エラーが出てうまく作成できません。 IIS6.0でどうやってパーミッションを操作するのかが分からず困っています。 どのようにすればローカル環境でディレクトリ作成できるかお教えください。 開発環境は以下の通りです。 言語:php5 WEBサーバ:IIS6.0 以上、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ディレクトリが作れません。

    どなたか教えて下さい! 今あるパーティション(マウントポイントは/export/home)配下で mkdir dirname でディレクトリを作成すると mkdir:ディレクトリの作成に失敗しました。"dirname";引数が正しくありません。 とエラーメッセージが表示されてしまいます。 rootユーザで行っても同じで、パーミッション・ディスク容量等には問題ありません。以前は作成できたのですが、ある時を境にこの状況になりました。他のパーティションでは問題なくディレクトリは作成できます。 fsckやformat-analyzeコマンドでディスクを検査しても特に問題は発見されませんでした。何が邪魔しているのか、どなたか教えて頂けませんか?お願いいたします。 環境はsparc solaris8 でdisk suiteを使用してミラーを組んでいます。

専門家に質問してみよう