2013-05-03 4 views
1

Я использую fwrite для создания html-файла в папке в моем плагине. Следующий код теперь позволяет мне записывать в папку, но ссылка, которую он пытается открыть, - это полный системный путь.WordPress fopen get directory link

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 

Я не уверен, как идти об этом.

ответ

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

To:

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

To:

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

и IFrame на моей странице вызывает значение & файла, который затем возвращает соответствующую ссылку на мой файл создан и он отлично загружается!

0

Прежде всего, вы можете рассчитывать на Определяет Wordpress' (или функций) детерминированным пути без каких-либо грязных писак:

Затем вы снова можете проверить вещи, использующие функции PHP, такие как file_exists(), is_dir(), is_writable():

Чтобы избежать сложного FOPEN, FWRITE, fclose обработчиков, вы можете пойти на file_put_contents() функций там тоже. Либо в добавляющим или перезапись режиме:

Не знаете, как это уместно, но имейте в виду, если это написано на веб-сервере, вам необходимо убедиться, что директория имеет права на запись есть. Самый простой способ - chmod 777 directory из оболочки, или SITE CHMOD 777 directory с FTP.

+0

Я не уверен, что это помогает. Я пробовал chmod 777 в каталоге и использовал fwrite(), а также file_put_contents() и даже имел $ DOCUMENT_ROOT = $ _SERVER ['DOCUMENT_ROOT']; установите путь к плагину. Но он записывает только в папку, если я использую $ DOCUMENT_ROOT = $ _SERVER ['DOCUMENT_ROOT']; Который, конечно же, вызывает полный системный путь к файлу, к которому тогда нельзя получить доступ. Однако файл добавляется в папку. –

+0

Ваш HTTP-сервер работает от chroot? – kyeno

+0

Хостинг - это godaddy.com, и я не знаю, работает ли он от chroot. Я не вижу ничего, показывая, что это происходит, пока я не запустил сценарий выше. –