PHP не может открыть файлы, сгенерированные ghostscript

0

У меня есть небольшая функция php, которая использует ghostscript для получения многостраничного PDF файла и преобразования его в несколько png. Эта часть скрипта работает, я могу запустить его и проверить папку с изображениями, и все они есть.

Следующая часть скрипта изменяет размеры png, созданных ghostcript. Однако любая попытка использовать эти png в php приводит к тому, что "не удалось открыть поток: нет такого файла или каталога"

Более того, если копировать один из сгенерированных png в другую папку или даже в одну папку, она станет читаемой. Это заставляет меня думать, что изображения, созданные с помощью ghostscript, могут иметь неправильные разрешения. Но когда я запускаю свой скрипт для проверки разрешений и если файл существует. оба возвращают false.

Вот сценарий конверсии:

    <?php
 //Upload pdf convert to pngs in the folder jpgs/originals
$uploaddir = 'uploadtemp/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo "<p>";
 if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {

    exec('bin\gswin32c.exe -o jpgs\originals\%3d.png -sDEVICE=png16m -r150 uploadtemp\input.pdf');
    unlink('uploadtemp\input.pdf');
    header('Location: main.php');
    } else {
    echo "Upload failed";
}       
?>

Вот сценарий, который пытается вызвать теперь сгенерированные png:

 <?php
$filename = "jpgs/originals/1.png";

    if (is_writable($filename)) {
        echo 'The file is writable';
    } else {
        echo 'The file is not writable';
    }

    if (file_exists($filename)) {
        echo "The file $filename exists";
    } else {
        echo "The file $filename does not exist";
?>

Оба оператора if возвращают false, хотя я могу видеть файлы, сгенерированные в папке

  • 0
    Убедитесь, что ваш скрипт ищет в той папке, в которой, по вашему мнению, он находится (относительные пути к файлам не так хороши, когда рабочий каталог может отличаться); проверка прав доступа к файлу, только потому, что у вас есть разрешение на просмотр содержимого папки, не означает, что PHP имеет
  • 0
    @MarkBaker Я знаю, что он смотрит в нужную папку, потому что, если вставить файл из другого места и просто изменить имя файла, он распознает файл. Я никогда не проверял разрешения php, но добавил mkdir ($ dir, 0744); чтобы убедиться, что PHP имеет полные права, и он по-прежнему не распознает файлы
Показать ещё 6 комментариев
Теги:
pdf
ghostscript

1 ответ

0

Это, безусловно, странная проблема, при запуске параметра ghostscript: jpgs\originals\%3d.png он создает файлы с двумя пробелами перед цифрой. Поэтому вызов файла 2.png не работает, потому что он не существует, но если вы вызываете [пробел] [пространство] 2.png, это работает! И когда окна копируют файл, он должен стереть лишние пробелы или что-то еще.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню