2

HTMLファイルをフォルダーに書き込むphpスクリプトがあります。これは、WordPress 以外でも完全に機能します。しかし、自分のコードをプラグインに取り込もうとすると、フォルダーに書き込まれなくなります。WordPressの外部にあるルートディレクトリでテストした元のフォルダーに書き込もうとしましたが、そこにも書き込めません。

これは、html ファイルに書き込む関数です。

function buildFrameFile($html, $filename){
    $filename= '/wp-content/plugins/my-plugin/html/' . $filename . ".html";
 $fh = fopen($filename, 'a');//open file and create if does not exist
 fwrite($fh, $html);//write data
 fclose($fh);//close file

return $filename;
 }

私も試してみました

$fh = fopen($filename, 'a');
$fh = fopen($filename, 'a+');
$fh = fopen($filename, 'w');
$fh = fopen($filename, 'a+');

これらのいずれも機能しません。

WordPress 内では、書き込み先のフォルダーに移動する必要があるのは php.ini ファイルや .htaccess ファイルに含まれている可能性があると考えていますが、行き詰まっています。

* アップデート **

エラーログにいくつかのエラーが見つかりました。次のとおりです。

エラー: fwrite() は、パラメーター 1 がリソースであると想定しています。

$fh = fopen($filename, 'a');//open file and create if does not exist
 fwrite($fh, $html);//write data
 fclose($fh);//close file

2回目の更新

次のコードを追加すると、ファイルがフォルダーに書き込まれます

function buildFrameFile($html, $filename){
    $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
    $filename= $DOCUMENT_ROOT. '/wp-content/plugins/my-plugin/html/' . $filename . ".html";
 $fh = fopen($filename, 'a');//open file and create if does not exist
 fwrite($fh, $html);//write data
 fclose($fh);//close file

 return $filename;
 }

しかし、ファイルを開くために呼び出すと、次のリンクからファイルを開こうとします

/var/chroot/home/content/##/########/html/wp-content/plugins/my-plugin/html/c413c4976260c1a786e7a48be03f3ad2.html

ブラウザに表示されないため、リンクによってファイルが見つかるとは思いません。

4

1 に答える 1

0

サーバーの error_log を読み、エラー メッセージを使用して問題を診断します。ログにエラーが見つかった場合は、ここに投稿してより良い回答を得てください。

エラーメッセージに基づいて編集:

$filename を fopen() 関数にハードコーディングして、$filename 変数でファイルへのパスが正しくないかどうかをテストできます。

var_dump()if $filename is correctのようなものを使用して $fh の値を把握する必要があります。ワードプレスを使用して fopen を介してパスを渡すと、$filename へのパスが正しくない可能性が高くなります。代わりに、ファイルを開こうとしたときにデータが取得されなかったことを示す FALSE の fopen からのエラー メッセージを渡しています。wordpress が開こうとしている場所に適切な名前の空のファイルを作成するだけでよい場合があります。

于 2013-05-03T16:02:09.637 に答える