содержимое файла: Не удалось открыть поток, такого файла или каталога нет
Я пытаюсь использовать 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());
3 answers
Определенно существует проблема с путем к папке назначения.
В приведенном выше сообщении об ошибке говорится, что он хочет поместить содержимое в файл в каталоге /files/grantapps/
, который будет находиться за пределами вашего vhost
, но где-то в системе (см. Начальную абсолютную косую черту)
Вам следует дважды проверить:
- Действительно ли существует каталог
/home/username/public_html/files/grantapps/
. - Содержит ваш цикл и ваш оператор file_put_contents- абсолютный путь
/home/username/public_html/files/grantapps/
Я также застрял в такой же проблеме, и я следую простому шагу ->
Просто получите точный 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']
Я столкнулся с этой проблемой вчера, и я не знаю, как я ее решил, но вот как я поступил.
Мой путь был "/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 обычно замечает вас, когда вы не можете писать из-за отсутствия прав, но вы никогда не знаете...