• ベストアンサー

PHPで空ファイルの作成方法

PHPで空(0バイト)のファイルを作成する方法が知りたいです。 Linuxを使っているので、パーミッションも考慮入れた複数の方法を教えてください。 単にfopenするとPermissionのエラー?が表示されました。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>ディレクトリのパーミッションは簡単に変更できるのでしょうか? phpを実行しているのはhttpdの実行者だとおもいます。 そいつがパーミッションをいじれるのであれば問題ないですが だめならそれなりの工夫が必要です。 (自分が運営しているサイトならsudoやsuExecなどで処理するとか)

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

>単にfopenするとPermissionのエラー?が表示されました。 パーミッションがないディレクトリでファイルを作ろうとしたとかはないですか? >Linuxを使っているので、パーミッションも考慮入れた複数の方法を教えてください。 何のパーミッションでしょうか? 作成するファイル?

ne5
質問者

補足

>パーミッションがないディレクトリでファイルを作ろうとしたとかはないですか? 原因はこれだと思いますが、ディレクトリのパーミッションは簡単に変更できるのでしょうか? ディレクトリのパーミッションを変えるための権限も必要・・・ ftpで変更するしかないのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

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

    こんばんは。 タイトルのとおりですが、まず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のコマンドでファイルの新規作成が出来ない

    パソコンを買い替えたため新しく「apache2.2」「php5」「mysql5」を入れ直しました。 商品の購入サンプルプログラムで試運転していたところ、購入情報を記録するファイルが開けずエラーが発生してしまいました。 Warning: fopen(/tmp/count.dat) [function.fopen]: failed to open stream: No such file or directory in C:\Apache2.2\htdocs\sample1-3-1.php on line 8 ファイルをオープンできませんでした このプログラムの8行目は $file = fopen($count_file, "w") or die("ファイルをオープンできませんでした"); になっています。 指定されたファイルが無い場合は新規作成される筈ですが、新規作成できていません。 このフォルダが読み込み専用になってるのかと思い、コメンドプロントで「attrib -r c:\apache2.2\htdocs」を入力し、読みより専用を解除してみましたが結果は変わりません。 手動で指定のファイルを作ったところ、エラーは出ず正常に動作します。 その都度ファイルを手動で作るわけにも行かず困っています。 詳しい方がいらっしゃいましたらどうかご教授お願いします。 型番:NEC LaVie L PC-LL750CS3KS OS:Windows7 Home Premium 64bit AMP環境:apache2.2.17 + php5.3.5 + mysql5.1.52

    • ベストアンサー
    • PHP
  • 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での自動作成されるファイルが

    ファイルの読み込み自体や、 既存ファイルへの書き込み等は問題がないようですが、 「新規」でファイルの追加が出来ない状況です。 つまりPHPで自動生成されるスクリプトが動作しません。 サーバー移転で、新しいサーバーのみ動かない状況です。 前回以下の回答がありましたが ----------------------------------------------------- PHPを実行しているスクリプトがファイルを作成する場合 ファイルの所有者はsystem(Apache)になると思われます。 要するに作成しようとするファイルの親ディレクトリの 所有者がsystem(Apache)であり、所有者書き込みが可能 のパーミッション(700)になっている場合か、親ディレクトリの 所有者がsystem(Apache)以外であるなら、所有者以外の 書き込みが許可(707もしくは777)になってなければ 新規ファイルの作成は失敗します。 ----------------------------------------------------- ユーザー用ディレクトリ(仮にuserとします) 所有者はアカウント、パーミッションは777です 登録があれば、userディレクトリにIDの名前で新しくディレクトリが作成され そのID名のディレクトリの中に必要なファイルも自動的に作成されます この登録が動作しません・・・ ファイルが新しく作成されない状態です。 試しに手動でUPすると、動作は正常でした。 ファイルの自動作成のみが動作しません。 パーミッションもこれで合っているように思えるのですが・・・ 原因が分かりません・・

    • ベストアンサー
    • PHP
  • PHPでリモートでファイルを取るやり方。

    こんにちわ, 今PHPの学習をしています。 今ネットワークで接続されたPC1とPC2でPHPを作成し,PC1でApacheをたちあげて,webでそのアドレスを指定してphpを使用しています。 このとき,PC1のファイルはファイルシステム関数(dirやfile,fopenなど)でそのファイルの中身を見たりできるのですが,このときPC2のファイルを見ることは可能なのでしょうか。 ちなみにPC1,PC2ともにLinuxでtelnet,ftp,rlogin,rcp等のネットワーク系コマンドはサーバーが立ち上がっているので,使用できます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • xreaでファイル作成ができない。パーミッションが不足しているとのこと

    xreaで以下のようなコードを書いたPHPファイルを実行しました。 if (($mixSource = fopen("../mail".$MailID.".htm","w")) === FALSE) { print("ファイルオープンでエラーが発生しました。");} fwrite($mixSource,$str); fclose($mixSource); そうしましたところ、権限が足りないというエラーが発生しました。 パーミッションを0777に設定しても、しばらくすると0705に戻っているため問い合わせると、0777は許可していないとのこと。 調査した結果、PHPをCGIとして動作させると良いらしいので、 AddHandler application/x-httpd-phpcgi .php と書いた「.htaccess」ファイルをアップロードしました。 そうするとファイル書き込みは正常に動作するようなのですが、 今度は session_start(); を実行すると Warning: session_start() [function.session-start]: open(/tmp/sess_igp2b7reu7aold9btdspuc2d57, O_RDWR) failed: Permission denied (13) というエラーとなります。 単純にxreaで、ファイル作成を行いたいだけなのですが、 方法をご存知ありませんでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPでPHPファイルを作成することはできますか?

    タイトルの通りの質問です。 http://example.jp/test.phpを実行すると、 tempというディレクトリが作成され、さらにその中に file.phpが作成するなんてことできませんか? file.phpの中身は ---ここから <?php echo "<html><body>hello world!</body></html>"; ?> ---ここまで …とし、当然ながら http://example.jp/temp/file.php にアクセスすると「hello world!」と表示されるようにしたいのですが。

    • ベストアンサー
    • PHP
  • PHPで画像を作成したい!

    OS :RedHat Linux 9 php:バージョンは4系です。 GD関連はインストール済みです。 数値データがあり、そのデータを元に画像を作成したいのですが、 PHPで作成したページを開いた時に数値データを読み込んで 画像を作成し、表示させたいと思っています。 ただ、ページ全体に画像を表示させるのではなく、 決められた箇所に表示させたいのですが、 どういった方法で行えばよいのでしょうか?

    • 締切済み
    • PHP
  • 書き込みファイルの読み込み

    PHPにて他PHPスクリプトが書き込みを行っているファイルに 対し、fopenでそのファイルを読み込みで開いても問題ありませんでしょうか? 読み込み処理中に、書き込む挙動がエラーになってしまわないか懸念してます。 Linuxサーバ PHP 4.3.10 Apache 1.3.31

    • 締切済み
    • PHP
  • PHPでFopenモードを「a」で開きたいのですが、

    PHPでFopenモードを「a」で開きたいのですが、 パーミッションを「777」でしか受け付けてくれません。 コードは、 $fp = @fopen("test.txt","a") or die("Error"); echo "ok"; fclose($fp); です。 サーバーはxreaでPHPのバージョンは5です。

    • 締切済み
    • PHP