содержимое файла: Не удалось открыть поток, такого файла или каталога нет


Я пытаюсь использовать 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 - последняя строка в моем полном сценарии.) Я не знаю, как решить эту проблему.

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());
 9
Author: vaindil, 2013-02-09

3 answers

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

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

Вам следует дважды проверить:

  • Действительно ли существует каталог /home/username/public_html/files/grantapps/.
  • Содержит ваш цикл и ваш оператор file_put_contents- абсолютный путь /home/username/public_html/files/grantapps/
 32
Author: SomeoneYouDontKnow, 2018-03-22 14:48:06

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

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

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

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

1->если вы находитесь на компьютере с Windows, то d:/xampp/htdocs/upload/test.txt и

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

И вы можете получить корень документа с помощью функции PHP->

$_SERVER['DOCUMENT_ROOT']
 5
Author: Sachin, 2015-02-05 08:28:29

Я столкнулся с этой проблемой вчера, и я не знаю, как я ее решил, но вот как я поступил.

Мой путь был "/tmp/transtel/importreleasedisk/", и я столкнулся с ошибкой; поэтому, чтобы начать решать проблему, я записал свой файл в основной родительский каталог, а затем углубился.

file_put_contents("/tmp/aa.txt", "aaa");
file_put_contents("/tmp/transtel/aa.txt", "aaa");
file_put_contents("/tmp/transtel/importReleaseDisk/aa.txt", "aaa");

Решил проблему, почему...

Убедитесь, что у вас есть хорошие разрешения. Php обычно замечает вас, когда вы не можете писать из-за отсутствия прав, но вы никогда не знаете...

 0
Author: Erwan Clügairtz, 2018-06-12 08:31:31