• ベストアンサー

functionでfopenが失敗する

functionの中からfopenするとfopenが失敗します。 この現象か発生したり、これを解決された方、情報をください。

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

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

  • ベストアンサー
  • namnam6838
  • ベストアンサー率36% (681/1861)
回答No.1

詳しいことがかかれていないのでわかりませんが、 fopenするときのファイル名を変数で示している場合は、 変数の中身が意図したものになっているか確認してみてください。

関連するQ&A

  • fopen() がたまにNULLを返す

    fopen() がたまに失敗します。 GetLastError() は、0を受けます。 昔、fopen() が失敗する場合についてのサイトを見たような記憶があるんだけど fopen() についていい情報があったら教えて下さい。 fopen() だけをするというシンプルなソースではそのようなエラーは 起きていません。エラーが発生するソースの他の部分に原因があるというのが 一番可能性がありそうなんだけど、原因がなかなか分かりません。

  • 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でのエラー

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

  • fopenでエラーとなる

    fopenを使用してログファイルへ書き込み時に、errno=13 Permission denied のエラーがまれに発生するときがあります。 ログファイルは、1ログを書く毎に、その都度、オープン/クローズしています。fopenの第二引数は"a+t"を指定しています。(テキストモード追加書き込み。+を指定している理由は、更新は行いませんが、Ctrl-Zの削除の為、+を指定することがマイクロソフトにより推奨されているため) もちろん、このログファイル(ディレクトリ含む)への書き込み権限がないということは、ありません。(あれば必ず発生しますので) 従って一時的に、書き込み不能となる状態が発生していると考えられます。エラーが発生した後も、一定の時間が経過した後には書き込めるようになります。 このような事象に遭遇したことのあるかたが、おりましたら、その旨回答下さい。又、解決方法(このような事態をさける方法)をご存じのかたがおりましたら、教えて下さい。 実行環境 Windows2003-server 開発環境 Visual Studio .NET 2003のC++による開発(コードの内容は実質的にC言語を使用、MFCは使用していません)

  • functionで別functionを動作させたい

    DBからデータをダウンロードするプログラムを書いており、DB接続・クエリー実行・エラー時の各functionをfunction.phpに記述しています。 このfunction.phpの中で、とあるfunctionから別のfunction fuga()を実行する方法を教えていただけませんか? 下記に簡略化したプログラム文を記述します。 function errmail($subject,$text,$mail) {    mb_send_mail($mail,$subject,$text,"hoge@hoge.co.jp"); } function hoge(){    $con = pg_connect(ここはDB接続設定);    if(!$con){    errmail("DB接続失敗", "DB接続に失敗","admin@fuga.co.jp");    exit; } } 以上ですが、function hogeからerrmailが実行できません。 実際のプログラムで、それぞれのfunctionが単体で正常動作することを確認しておりますが、functionをまたがる(というのでしょうか;)実行方法についてお願いいたします。

    • ベストアンサー
    • PHP
  • fopenの引数の中に変数と文字をいれる方法は?

    fopenの引数の中に変数と文字を入れた場合、エラーが発生しました。 fa = fopen(a[g]".csv", "w" ); 例えば、上記の式にはfopenの引数に変数a[g]と文字列.csvを入れた場合にエラーが発生しました。 エラーの内容は (1)error C2143: 構文エラー : ')' が '文字列' の前にありません。 (2)error C2661: 'fopen' : 1 個の引数を伴うオーバーロードされた関数はありません。 (3)error C2059: 構文エラー : ')' です。 できなくて困っています。 もしわかる方がいたら教えていただけないでしょうか? よろしくお願いいたします。

  • fopenでのパス指定

    毎度お世話になります。 ただ今VS2005でWindowsアプリケーションの実装を行っています。 fopenでパス指定をしてファイルを開くとき、  fopen("C:\\Test\\data.txt", w); としますが、GetModuleFileNameで取得したパス↓  GetModuleFileName(NULL, szPath, sizeof(szPath)); を使用したいとき、単に  fopen(szPath, w); ではできません。これはszPathの中身が  C:\Test\data.txt となっているためにfopenでは開けないんだと思うのですが、 わざわざszPathの文字を1文字づつ見ていって、 "\"があったときに"\"を付け足す… という作業をしなければならないのでしょうか。 他に解決策があるのでしょうか。 ご教授お願いします。

  • 「ファンクションが間違っています」について

    過去の質問にかなりの数が投稿されている現象ですが、当方でも発生しました。 質問にはざっと目を通しましたが発生状況はいろいろあり、また解決方法も確立されていないようなこともわかっているのですが、何もしないよりは質問してみようと思いました(たぶん明確な回答は得られないかもしれませんが)。 内容としては、 ・前日までは読み書きできていたDVDが突如、メッセージが表示されるようになった。 ・以前は読みこめたDVDが、メッセージが表示され読めなくなった。 などです(状況は違えど現象は同じかなと思っています)。 実は当方、ヘルプデスク業務を担当しており当現象の解決方法を模索しています。 客先にて現象が発生した時点では以前の使用状況が不鮮明なことが多く、後手を踏むことばかりで詳細なことはよくわかっていないのが現状です(利用者に聞いてもはっきり覚えていることはまずないので…)。 DVDと記載しましたが様々な利用者がいてメディアの特定までできていません。 ライティングソフトは「RecordNow! Ver.7.22」および「DLA」がインストールされています。 下記、PC構成です。 OS:WindowsXP SP2 ドライブ:DVDスーパーマルチドライブ 他の構成は必要ないかと思うので割愛します(必要であればまた書きます)。 問題はメッセージが表示される前まで「使えていた」ことです。 客先PCの設定は基本的に同一で配布されており、通常変更することはあまりないはずなのです(好きな人、詳しい人は変更するかもしれませんが)。 よくある対策方法に、ドライブプロパティの書き込みタブのチェック有無などありますが、その辺りを変更するなどほとんどないことだと認識しています。 にも関わらず、エラーメッセージが表示される事象が稀にあるのです。 もちろんそんなことがないPCは大多数を占めますが、エラーも少なからずあるというのが現実としてあるのが納得いかないところでして。 エラーが表示されたPCには上記チェックをつけてメッセージの回避はしていますが根本解決にはいたらずで困っています。 なにかご存知の方がいらっしゃいましたらご助力いただけると助かります。 長文駄文で失礼ですが、よろしくお願いいたします。

  • 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のコード

    初歩的なことですがファイルをオープンするfopenの例題で *************************** #include<stdio.h> int main (void) {   FILE  *fp;     fp = fopen ("test1.txt","w");   if (fp==NULL) {     printf ("ファイルをオープンできませんでした。\n");     return 1;   }    else {     printf ("ファイルをオープンしました。\n");   }    fclose (fp);   printf ("ファイルをクローズしました。\n");    return  0; } *********************************というのがあります。 この中のif文の中のreturnの戻り値が1なのはなぜでしょうか? (例題によっては-1というのもありましたが・・。) またどこに戻り値を返すのでしょうか? もしファイルがオープンできなければその時点で終了になるのでしょうか?初歩的なところですがお願いします。

専門家に質問してみよう