1

我正在使用 fwrite 在插件内的文件夹中创建一个 html 文件。下面的代码现在允许我写入文件夹,但它试图打开的链接是完整的系统路径。

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/79dda339bad8e65c425e580d62f41fa1.html

我需要它从这里打开:

/wp-content/plugins/my-plugin/html/79dda339bad8e65c425e580d62f41fa1.html

我不知道该怎么做。

4

3 回答 3

1

我解决了我的问题。我最终将代码更改为:

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;
 }

至:

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

 return $filename;
 }

这样,文件就会保存到文件夹中,并且只返回文件的实际名称,而不是文件的整个链接。

然后在我的标题中,我将代码更改为:

header("Location: /confirm" . $nvp_str . "&filename=" . $filename);

至:

header("Location: /confirm?" . $nvp_str . "&filename=" . '/wp-content/plugins/my-plugin/html/' . $filename . ".html");

我页面中的 iframe 调用 &filename 的值,然后返回到我创建的文件的正确链接,并且加载完美!

于 2013-05-05T00:32:02.423 回答
0

首先,您可以依靠 Wordpress 的定义(或函数)来确定路径,而无需任何肮脏的黑客攻击:

然后,您可以再次使用 PHP 函数检查事物,例如file_exists(), is_dir(), is_writable():

为了避免复杂的 fopen、fwrite、fclose 处理程序,您也可以在file_put_contents()那里使用函数。在附加或覆盖模式下:

不确定有多相关,但请记住,如果这是由网络服务器编写的,则需要确保该目录具有写入权限。最简单的方法是chmod 777 directory从 shell 或SITE CHMOD 777 directoryFTP。

于 2013-05-03T20:57:17.793 回答
0

您的问题很可能与奇怪的 Godaddy 设置有关。你可以在这里找到更多信息:http ://www.quest4.org/etc/godaddy_path.htm

这里还发布了一个类似的问题: WordPress's plugins_url() function not working on shared hosting

于 2013-05-04T03:22:01.353 回答