2013-02-09 13 views
7

Próbuję użyć dompdf, aby zapisać formularz w łatwo czytelnym pliku .pdf, a mój skrypt przetwarzania znajduje się poniżej. Otrzymuję komunikat o błędzie 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. (Linia 39 to ostatnia linia w moim pełnym skrypcie). Nie wiem, jak rozwiązać ten problem.file_put_contents: Nie udało się otworzyć strumienia, żadnego takiego pliku ani katalogu

allow_url_fopen jest włączony i próbowałem wszystkich rodzajów ścieżek plików, w tym pełnego katalogu (/home/username/public_html/subdir/files/grantapps/) i tego, co jest w kodzie poniżej, ale nic nie działało.

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

Dlaczego pętla while? – luckystars

+0

Użytkownik może przesłać formularz wiele razy, a ponieważ używam jego nazwy jako nazwy pliku, chciałem, aby po prostu dopisał numer do końca i zapisał każdy plik z nową nazwą pliku, zamiast nadpisywać istniejący plik . – vaindil

+0

dlaczego nie używać $ dompdf-> stream ("pliki/grantapps /". $ Nazwa. $ I. ".pdf"); – luckystars

Odpowiedz

30

Istnieje zdecydowanie problem ze ścieżką folderu docelowego.

mówi Twój powyższy komunikat o błędzie, że chce umieścić zawartość do pliku w katalogu „/ files/grantapps /”, co byłoby poza swoim vhost ale gdzieś w systemie (patrz wiodącą absolutną ukośnik)

należy dokładnie sprawdzić:

  • jest katalog "/ home/username/public_html/files/grantapps /" rzeczywiście obecny.
  • Zawiera swoją pętlę i twoi file_put_contents-komunikat bezwzględna ścieżka "/ home/username/public_html/files/grantapps /"
+7

Jestem największym idiotą na świecie. Zrobiłem wszystko * oprócz * tworzenia katalogu '/ grantapps /'. Stworzenie tego i powrót do pełnego linku działały. Przepraszam, dziękuję bardzo! – vaindil

+1

Mam ten sam problem i wszystkie moje ścieżki są idealnie skonfigurowane, po prostu wyrzuca ten sam błąd. –

+0

Ważną częścią było dla mnie użycie ścieżki ** absolute **, używałem '~ /'. – Tibo

5

Byłem też tkwi w tego samego rodzaju problemu i śledzę prosty krok- >

tylko uzyskać dokładny adres URL pliku, do którego chcesz skopiować u ex>

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

i zdać dokładną bezwzględną ścieżkę do folderu z nazwą pliku gdzie u chcą napisać, że plik

1-> jeśli ur na komputerze z systemem Windows, a następnie d:/xampp/htdocs/upload/test.txt i

2-> jeśli ur na maszynie linux następnie /var/www/html/upload/test.txt

i można uzyskać u korzenia docuement przez PHP funk->

$_SERVER['DOCUMENT_ROOT'] 
Powiązane problemy