2016-01-28 4 views
1

Я пытаюсь использовать исполняемый скрипт (wkhtmltopdf) на общем веб-сервере Linux (Debian, 64 бит). Я уверен, что я собрал все правильно, но всякий раз, когда я хочу, чтобы выполнить этот файл я получаю в качестве ответа:Bash: Нет такого файла или каталога?

> ./wkhtmltopdf -H 
-bash: ./wkhtmltopdf: No such file or directory 

Чтобы быть уверенным в том, что файл находится там, то здесь выход лс

> ls 
wkhtmltoimage wkhtmltopdf 

Кроме того, я проверил командный файл на нем, которая выводит следующее:

> file wkhtmltopdf 
wkhtmltopdf: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped 

Мой вопрос теперь:

Почему bash говорит мне, что нет «файла или каталога», когда, очевидно, один?

Мое первое предположение заключалось в том, что общий сервер не позволяет выполнять двоичные файлы? Но разве это не должно быть проблемой разрешений с другим выходом bash?

Edit:

> id 
uid=2725674(p8907906) gid=600(ftpusers) groups=600(ftpusers) 

> ls -l wkhtmltopdf 
-rwxrwxrwx 1 p8907906 ftpusers 39745960 Jan 20 09:33 wkhtmltopdf 

> ls -ld 
drwx---r-x 2 p8907906 ftpusers 44 Jan 28 21:02 . 
+0

Если файловая система смонтирована с «поехес» вариант вы получите «Права доступа запрещены. – Cyrus

+0

Какие разрешения? – tadamhicks

+0

Добавьте к вашему запросу вывод:' id' и 'ls -l wkhtmltopdf' – Cyrus

ответ

4

Я уверен, вы пропустите динамический компоновщик. Просто сделать

readelf --all ./wkhtmltopdf | grep interpreter 

Вы должны получить выход так:

[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2] 

Есть высокая вероятность того, что вы система испытывает недостаток интерпретатора (/lib64/ld-linux-x86-64.so.2 в данном примере). В этом случае bash будет кричать No such file or directory, точно так же, как когда сам двоичный файл отсутствует.

Вы можете использовать различный компоновщик. Когда-нибудь вы добьетесь успеха. Просто сделать:

/path/to/the/linker /path/to/your/executable 

Эта команда:

find /lib* -name ld-linux\* 

поможет вам найти линкеры в вашей системе. Или вы можете сделать команду readelf по некоторой команде, которую выполняет. Он покажет вам правильный, рабочий компоновщик.

ИЛИ, так как у вас система Debian, просто сделать

sudo apt-get install wkhtmltopdf 

установить родную версию инструмента :)

+0

Вывод точно так же, как вы сказали. Как я могу теперь определенно проверить, существует ли '/lib64/ld-linux-x86-64.so.2'exists? – Knowledge

+1

Измените 'ls -l/lib64/ld-linux-x86-64.so.2'. Вставьте его здесь. – nsilent22

+0

Выход ls: 'ls: невозможно получить доступ /lib64/ld-linux-x86-64.so.2: Нет такого файла или каталога' so thx :) – Knowledge

Смежные вопросы