2013-02-09 3 views
7

Я пытаюсь использовать dompdf для сохранения формы в легко читаемом .pdf-файле, а мой сценарий обработки ниже. Я получаю ошибку Warning: file_put_contents(/files/grantapps/NAME0.pdf) [function.file-put-contents]: failed to open stream: No such file or directory in /home/username/public_html/subdir/apps/dompdf/filename.php on line 39. (Строка 39 - последняя строка в моем полном скрипте.) Я не знаю, как решить эту проблему.file_put_contents: Не удалось открыть поток, нет такого файла или каталога

allow_url_fopen включен, и я пробовал все виды путей к файлу, включая полный каталог (/home/username/public_html/subdir/files/grantapps/) и что находится в коде ниже, но ничего не работало.

require_once("dompdf_config.inc.php"); 
date_default_timezone_set('America/Detroit'); 

$html = 'code and whatnot is here'; 

$name = str_replace(" ", "", $_POST['form2name']); 
$i = 0; 
$dompdf = new DOMPDF(); 
$dompdf->load_html($html); 
$dompdf->render(); 
while(file_exists("files/grantapps/" . $name . $i . ".pdf")) { 
    $i++; 
} 
file_put_contents("files/grantapps/" . $name . $i . ".pdf", $dompdf->output()); 
+0

Почему цикл while? – luckystars

+0

Пользователь может отправить форму несколько раз, и, поскольку я использую их имя в качестве имени файла, я хотел, чтобы он просто добавлял число до конца и сохранял каждый файл с новым именем файла, а не перезаписывал существующий файл , – vaindil

+0

Почему бы не использовать $ dompdf-> stream ("files/grantapps /". $ Name. $ I. ".pdf"); – luckystars

ответ

30

Существует определенная проблема с пути к папке назначения.

говорит Ваше выше сообщение об ошибке, он хочет, чтобы поместить содержимое в файл в каталоге «/ файлы/grantapps /», который был бы за пределы вашего виртуального хоста, но где-то в системе (см ведущего абсолютный слэша)

Вы должны перепроверить:

  • Является каталог "/ главная/имя пользователя/public_html/файлы/grantapps /" действительно присутствует.
  • Содержит свой цикл и ваши file_put_contents-себе абсолютный путь «/ главная/имя пользователя/public_html/файлы/grantapps /»
+7

Я самый большой идиот в мире. Я сделал все * кроме * создания каталога '/ grantapps /'. Создаем это и вернемся к полной ссылке. Извините, большое вам спасибо! – vaindil

+1

У меня такая же проблема, и все мои пути отлично настроены, она просто бросает ту же ошибку. –

+0

Важной частью для меня было использование ** абсолютного ** пути, я использовал '~ /'. – Tibo

5

я тоже застрял в такой же проблемой и я следовать простой шаг- >

просто получить точный URL файла, в котором и хотите скопировать экс->

http://www.test.com/test.txt (file to copy) 

и передать точный абсолютный путь к папке с именем файла, где делают и хотят, чтобы написать этот файл

1-> Ура, если на окна машины, то d:/xampp/htdocs/upload/test.txt и

2-> если Ур на Linux машине, то /var/www/html/upload/test.txt

, и вы можете получить корень docuement по РНР FUNCTION->

$_SERVER['DOCUMENT_ROOT'] 
Смежные вопросы