WordPress fopen获取目录链接

时间:2013-05-03 20:44:23

标签: wordpress-plugin fopen fwrite

我正在使用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

我不知道该怎么做。

3 个答案:

答案 0 :(得分: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的值,然后返回到我创建的文件的正确链接,它加载完美!

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

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

这里也有一个类似的问题: WordPress's plugins_url() function not working on shared hosting