1

Zend Framework でファイルの存在を確認しようとしています。ファイルが存在しない場合は作成します。使用されているコードは次のとおりです。

$filename = "/assessmentsFile/rubrics/$rubricID.php";
$somecontent = "test";

if (!$handle = fopen($filename, 'w+')) {
    echo "Cannot open file ($filename)";
    exit;
}

// Write $somecontent to our opened file.
if (fwrite($handle, $somecontent) === false) {
   echo "Cannot write to file ($filename)";
   exit;
}

ただし、ファイル構造を処理する Zend の方法により、ファイルが存在しない場合は吐き出すだけだと思います。

警告: fopen(/assessmentsFile/rubrics/1.php) [function.fopen]: ストリームを開くことができませんでした: そのようなファイルまたはディレクトリはありません

fopen 関数が機能していないため、fwrite はファイルを書き込むことができません。

これを行う別の方法はありますか?

4

2 に答える 2

2

ほとんどの場合、問題は へのパスにあり$filenameます。

あなたが持っている

$filename = "/assessmentsFile/rubrics/$rubricID.php";

これは、サーバーのルートにある というディレクトリにファイルを作成しようとしますassessmentsFile

ほとんどの場合、次を使用する必要があります。

$filename = $_SERVER['DOCUMENT_ROOT'] . "/assessmentsFile/rubrics/$rubricID.php";

$_SERVER['DOCUMENT_ROOT']assessmentsFileフォルダーが Web ルートにある場合は、トリックを実行する必要があります。それ以外の場合は、完全修飾パスを取得するために使用できる他の変数があります。または、パスを単純にハードコードすることもできます。

$filename = "/home/yoursite/public_html/assessmentsFile/rubrics/$rubricID.php";
于 2012-08-12T23:45:49.187 に答える
1

file_existsファイルが存在するかどうかを通知する機能があり、それを使用してファイルis_fileであることを確認できます(たとえば、ディレクトリではありません)。

(別の方法は、関数呼び出しの前に @ を付けて警告を抑制することです (たとえば$handle=@fopen(...)、ファイルの存在を確認する方がよい)。

これを試して:

if(is_file($filename)){ // exists
  $handle=fopen($filename,"w+");
}else{
  $handle=fopen($filename,"w"); // create it
}
// ...
于 2012-08-12T23:29:53.773 に答える