PHPでの自動作成されるファイルが新規で追加できない状況

このQ&Aのポイント
  • PHPで自動生成されるファイルの読み込みや既存ファイルへの書き込みには問題がないが、新規でファイルを追加することができない状況が発生しています。
  • サーバー移転後、新しいサーバーでのみ自動生成されるスクリプトが動作しない状況です。
  • 以前の回答では、ファイルの親ディレクトリの所有者やパーミッションに関連している可能性があります。
回答を見る
  • ベストアンサー

PHPでの自動作成されるファイルが

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

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

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

  • ベストアンサー
  • utano_m
  • ベストアンサー率45% (14/31)
回答No.2

少し思い当たることが合ったので追加書き込みです phpinfo()を使ってPHPの設定を確認してください。 safe_mode関係の設定がONになっているようならそれが原因かもしれません。

himatubusu
質問者

お礼

ありがとうございます!! safe_mode関係らしいです。 セーフモードをオフにしたら問題無くなりました

その他の回答 (1)

  • utano_m
  • ベストアンサー率45% (14/31)
回答No.1

>登録があれば、userディレクトリにIDの名前で新しくディレクトリが作成され スクリプトが自動で作成したディレクトリのパーミッションをFTPのアプリ等で確認してみてください もし700のままでしたらパーミッションの変更が必要です。 スクリプト内でディレクトリを作成した後、作成したディレクトリの パーミッションをchmod()を使って777等に変更する必要があります。 mkdir ("作成したいディレクトリ", 0777);//ここでパーミッションを指定しているが、反映しない場合がある chmod("作成したいディレクトリ", 0777);//ディレクトリのパーミッションを変更

himatubusu
質問者

補足

それが自動で作成されないのです。 スクリプトで自動作成されるはずなのですが・・・ 他のサーバーでは問題なく動作しています。

関連する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から外部コマンドを使ってファイルやディレクトリを新規作成することができるでしょうか? よろしくお願いします。

  • Apache2 - CGIで出力されたファイルの所有者を変更するには?

    Gentoo LinuxでApache2を動かしています。 Apache2の質問です。 UserDirで実行された(mod_userdirで処理される)CGIまたはPHPスクリプトが出力するファイル/ディレクトリの所有者を、リクエストされたユーザディレクトリのuid, gid へ自動的に変更する方法を教えてください。 レンタルサーバーではこのような動作を見掛けるし一般的だと思うのですが設定方法がわかりません。 よろしくお願いします。

  • PHPのパーミッション変更の方法

    借りているサーバーが新しく移行しまして、 セキュリティの向上のため、PHP は Apache のモジュ ールとしてではなく、自動的にCGIとして動作します。 PHPが正常に動作しない場合は、PHPのパーミッションやPHPを設置しているディレクトリのパーミッションを [755] にしてお試しください。 と言われました。 使っているのはsmartFTPです。 パーミッション変更の方法を教えてください!

    • ベストアンサー
    • PHP
  • PHPのセーフモード

    ステップサーバというレンタルサーバを使っています。 https://stepserver.jp/ PHPでcopy関数を使おうと思ったのですが、うまくいきません。 ローカルで実行すれば動作するのですが、サーバで実行するとダメです。 サーバのQ&Aを見ていたら、どうやらセーフモードという 設定で使用できる関数が制限されているようなのはわかりました。 copy関数も制限されていて、 「処理を行うファイル/ディレクトリが実行するスクリプトと同じ所有者であるかどうかを 確認します。 処理を行うディレクトリが実行するスクリプトと同じ所有者であるかどうかを 確認します。」 とありましたが、これはつまり使えないということなのでしょうか? ローカルでは動作するので、パーミッション等の問題でしょうか?

    • ベストアンサー
    • PHP
  • フォルダの自動作成

    ウェブ上でユーザがアカウントを追加したときにそのユーザ用のフォルダを自動作成する方法はありますか? http://www.○○.com/ユーザID/ この「ユーザID」部分のフォルダを自動作成したいです。 出来れば全ユーザ共通のファイルもコピーできるとより良いです。 宜しくお願いします。 freeBSD Apache 2.x.x php 5.x.x

    • ベストアンサー
    • HTML
  • PHP実行でファイルのダウンロードのダイアログが開きます。

    OSはDebian GNU/Linux 3.0です。 PHP4.3.7とapache1.3.31において PHPファイルが正常に開けません。 下記のファイルを作成しパーミッション777で FFFTPを用いてアップロードしました <? phpinfo(); ?> しかしながらブラウザでアクセスすると、ファイルの ダウンロードのダイアログが開きます。 設定はapache側のみしており、 <Directory /var/www> options All AllowOverride All Order allow,deny allow from all </Directory> addhandler cgi-script .cgi .pl addtype text/html .shtml addhandler server-paresd .shtml を変更しました。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
  • WindowsでPHPのアップロード系処理を扱うときのディレクトリパー

    WindowsでPHPのアップロード系処理を扱うときのディレクトリパーミッションについて。 Windows7+Apache2.2.x+PHP3.1でアップロード処理を行ったときに、php.ini内で設定されているアップロード一時ディレクトリからmove_uploaded_fileでファイルを移動させるときにうまくいきません。$_FILES変数から一時ディレクトリの値をとってくることすらできていないようです。サーバを起動しているマシン内から行うとできます。リモートからのときにできません。 で、探してみたらこの問題で引っかかっている人が結構いたようで、Webサーバのディレクトリと同じパーミッションを与えてやればいいというような記述があったので、アップロード用ディレクトリにApacheのルートディレクトリから属性を継承ささせ、「Everyone」ユーザにフルコントロールを与えてみたのですが改善しませんでした。具体的な手順をご存知の方がおられましたら教えていただけると幸いです。

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

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

    • ベストアンサー
    • PHP
  • apacheの設定について

    お世話になります。 現在、自宅サーバーからレンタル専用サーバーにwebサイトを移行する作業をしています。 その専用サーバーの各種デーモンはレンタル業者さんがインストールしてくれました。 そして、webアプリケーション(php)を移行してテストした所、fopen関数、mkdir関数などファイルにアクセスする関数が全て「権限なし」でエラーになりました。 調べた所、移行したファイルのパーミッションの書き込み許可は問題なく所有ユーザーとグループが「48」と表示されていました。 この「48」は元サーバー上のapacheのユーザーIDでした。 専用サーバーにはapacheのユーザー及びグループが無く「48」のユーザーIDでapacheユーザーをwebminで作成しましたが、エラーは解消されませんでした。 apacheとユーザーの関連付けが出来ていない為でしょうか? また、修正方法はございますでしょうか。 自分はapacheをインストールした時に自動的にユーザーが作成されると思っていましたが間違いですか? まだまだ素人で申し訳ございませんがご教授お願い申し上げます。

専門家に質問してみよう