• 締切済み

fopenのmode「w」について

宜しくお願い致します。 fopenのmode「w」で、ファイルを新規作成しつつ、データを書込みたい場合で、サーバ間でファイルを作成したい場合、http://~では、mode「w」でのファイル作成は出来ないですが、ftp://でのファイル作成は出来るとマニュアルに書いてあるのですが、failed to open streamエラーが発生してファイルが作れません。 PHP.iniで、open_basedirの指定はされておらず、allow_url_fopenはOnになっているのですが・・・。 何卒、ご教授の程、宜しくお願い致します。

  • nikuq
  • お礼率75% (477/631)
  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

ftpを使うのであれば、fopenではなく、fsockoepnやftp関数とかを使ったほうが良い気がします。 failed to open streamの詳細はなんて書かれているんでしょう? その続きに原因が書いてあるんじゃないかな?と思います。 FTPなんちゃらって書いてあれば、FTP側、PermissionとかFile not foundとか良くあるタイプならプログラムやPHPの設定など、送信側に問題がありそうです。

nikuq
質問者

補足

すみません。説明不足でした。 リモートサーバ間で、データの書込みをしたいのです。 Linuxベースのサーバなので、ftp関数はインストールされておらず使用できません。 しかし、別のサーバにファイルを直接書き込みたいのです。。。 エラーの内容は、failed to open streamの後には、PHPファイルのエラー行数しか書いてありませんでした。

関連するQ&A

  • fopenでファイルがオープンできません

    $fp = fopen(TEST_FILE, "w") としてオープンしようとすると Warning: fopen(mybasic9.txt): failed to open stream: No such file or directory と、オープンしようとしたファイルがない、と出ます そして、そのファイルをあらかじめ作っておくと OKです。 しかし fopen(TEST_FILE, "w") は該当ファイルがあればそれをオープンし 無ければ、新しく作成する、とFopenの仕様に出ています。 これは、今使っているサーバーの問題でしょうか 何か、避ける方法はないでしょうか よろしくお願いします

    • 締切済み
    • PHP
  • fopenが動作しない

    PHPで、別のファイルで取得したファイル名をもとに fopenを使ってファイルを開こうとしているのですが、 どうしてもうまくいきません。 具体的な症状は以下のとおりです。 a.phpの中で、 … $file[2] = "hoge02.xml"; … のように、配列にファイル名を代入します。 これを b.php で require_once('a.php'); とした後 print_r($file); とすると Array([0] => … [2] => "hoge02.xml" [3]…) のように表示されるところまでは確認できました。 しかし、 $file0 = $file[2]; $fp = fopen("$file0", 'r'); とすると Warning: fopen( "hoge02.xml" ) [function.fopen]: failed to open stream: Invalid argument in [b.php の絶対アドレス] とエラーが出てしまい、実行することが出来ません。 そこで、 //$file0 = $file[2]; $file0 = "hoge02.xml"; $fp = fopen("$file0",'r'); とすると実行することが出来ました。 作成しているシステム上、fopenの1つ目の引数には変数または配列を使いたいのですが、 エラーが発生してどうしてもうまくいきません。 自分なりにも似たようなエラーがないか調べたのですが、 それらしいものを見つけることが出来ず、お手上げ状態です。 どなたか解決策をご存じないでしょうか。 ご教授の程、よろしくお願い致します。

    • 締切済み
    • PHP
  • fopenでパーミッションエラー

    fopenでパーミッションエラーが出ます。 fopen("../news.htm", "w"); Warning: fopen(../news.htm): failed to open stream: 許可がありません。 fopen("./news.htm", "w"); fopen("../map/news.htm", "w");# mapディレクトリを757にしてOK 上記はOKでした。 ディレクトリ構成は /public_html/sample/mag/test.php # fopenをするファイル sampleを757にしてもエラーが出ました。 fopenで一つ上のディレクトリにファイルを書き込むことは出来ないのでしょうか?

    • 締切済み
    • PHP
  • fopenがURL指定で開けない

    別サーバーにあるwmvファイルをDLさせようとしているのですが、以下のWarningが出てURL指定でfopenで開けません。 Warning: php_network_getaddresses: getaddrinfo failed: name or service is not known in [URL] php.iniで、allow_url_fopen はONになっており、ファイルを同サーバー内に置いてパス指定した場合は成功するのですが。。。 3日かけて調べましたが全く手詰まりです。。 何か他に考えられる原因はありますでしょうか? すみませんがどなたか感所のある方、宜しくお願いします。<(_ _)> 環境: RedHat Linux Apache1.3.3 PHP4.3.x

    • 締切済み
    • PHP
  • fopen で半角カナファイル名

    XP apache2.0系 で起動しているサイトのファイルを fopen で開こうと思っています。 タイトルでも触れていますが、ファイル名が半角カナファイル名なんです。 ブラウザで直にパスを打つとダウンロードのやつが開くのでパスは大丈夫だと思います。 fopen で開こうとすると failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found  が出ます。 ファイル名が半角英数字であればfopenは問題ないです。 半角カナ部分の取り扱いだとは思うんですけど (1)PHP側で変換すればうまくいく? (2)apacheの設定変更でうまくいく? どっちなんでしょう?それとも他の手段を用いるべきなんでしょうか? ちなみに そのファイルが配置してあるディレクトリ一覧をブラウザで表示すると 半角カナファイルは文字化けして表示されています。 なので、私は(2)かなと思っているんですけど。

    • ベストアンサー
    • PHP
  • fopenでURL内容の取得のエラー

    fopen(<URLを指定>,'r'); としたときにエラーが発生してしまいます。 この現象は環境によって出る場合と出ない場合があります。 以下はいずれもphpinfo()で取得したPHPとApacheのバージョンです。 <エラーが出ない環境> PHP Version 4.2.3 Apache/1.3.27 <エラーが出る環境> PHP Version 4.3.9 Apache/1.3.31 (Win32) PHP/4.3.9 エラーメッセージは以下のようなものです。 Warning: fopen(<ここにアクセスしたURLが表示>): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in <エラーが出ているプログラムと、fopen()の行が表示> よろしくお願い致します。

    • 締切済み
    • PHP
  • fopenしてくれない。。。

    こんにちは。PHP初級者です。 postgresqlに入れたデータをCSVファイルに書き込んで、出力してみたいと思って以下のプログラムを作ってみました。 $file_name ="insatu.csv"; //データベースから呼び出し以下の$arrayへいれるデータは省略します。 //今回は1行のみのデータを入力プログラムになってますが、本当は何行もやるプログラムとなってます。 $array = compact("a","b","c","d","e","f","g","h","i","j","k","l"); $string = implode("," , $array); $file = fopen($file_name, "a") or die ("openエラー $file_name"); flock($file, LOCK_EX); fputs($file, $string."\n"); flock($file, LOCK_UN); fclose($file); $file = fopen($file_name, "r"); while($array = fgetcsv($file, 1000, ",")){ echo "<hr> \n"; for($i=0; $i< count($array); $i++){ echo $array[$i]."<br>"; } } fclose($file); なぜか最初の fopenで dieの方へ行って OPENエラーメッセージが出てきます。 この作業をするためには何かあらかじめ入れなくてはいけない構文とかあるんでしょうか?何か間違っていますでしょうか? それともphp.iniを設定するとかしなくてはいけないんでしょうか? php5を使用してますが、php.iniやphp.ini-distはともに見つからず。 困り果ててます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • fopenでのエラー

    こんばんわ、長田と申します。  現在WINNTserverのsp6で動作させるアプリを VC6作成しているのですが同一ファイルを一定周期(数秒)で オープン→ファイル処理→クローズと行っていると あるタイミングでファイルオープンエラーが発生してしまいます。  同一アプリケーションをWIN2000で動作させた場合は 発生しないのでOSに問題があるかと疑っている のですが、どなたかこのような現象に心当たりの ある方はいらっしゃらないでしょうか? ちなみに  ファイルオープンー>fopen()  ファイルクローズ->fclose() を使用しています。 宜しくお願いします。

  • Permission denied in

    PHPを実行するとWarning: fopen failed to open stream Permission denied inと 表示されてしまいます。 インターネットを使い、調べてはいますが、 上記のように表示してしまいます。 ファイルです。パーミッションは606にしました。 このWarningを表示させないようにするには、どのようにすれば 良いのか教えて頂けると嬉しいです。

    • ベストアンサー
    • PHP
  • C言語のfopen関数とfseek関数についてお尋ねします。

    fopen関数について オープンモードは様々ありますが、既存のファイルをバイナリモードで書き換えるということは出来ないのでしょうか? オープンモードが、「wb」などの場合は既存のデータを上書きしてしまって、内容が消えてしまいます。 かと言って、「ab」で開くと最後から追加されてしまいます。 fseek関数を使って、場所を指定しても言うことを聞いてくれませんでした。 既存のファイルの途中部分を少し書き換えるだけの作業は、出来ないのでしょうか? fseek関数について バイナリモードで開いているときに、ファイルの全体を知りたい時に次のように書いたら間違いなのでしょうか? fseek(FILE *stream, 0, SEEK_END); ftell(FILE *stream); fseekで最後のポジションに移動させて、ftellで最後のカレントポジションを調べるという方法は使えるのでしょうか? 以上2点よろしくお願いします。

専門家に質問してみよう