Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скачать файл? Скачать файл со страницы .cgi 
:(
    Опции темы
mad_doc
Дата 11.5.2005, 02:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Помогите разобраться с такой проблемой, из БД грузятся ссылки на разные файлы (.doc, .xls, pdf, chm ........)
Все это отображается в броузере ИЕ на странице .cgi

Выдает 500 ошибку, в логе
[Wed May 11 02:00:32 2005] [error] [client 127.0.0.1] /home/site/cgi-bin/materials/p1010876.jpg is not executable; ensure interpreted scripts have "#!" first line
[Wed May 11 02:00:32 2005] [error] [client 127.0.0.1] (2)No such file or directory: couldn't spawn child process: /home/site/cgi-bin/materials/p1010876.jpg
  Вверх
CPLUSPLUS
Дата 11.5.2005, 05:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 22.10.2003

Репутация: нет
Всего: 2



Нужен код....
PM MAIL   Вверх
korob2001
Дата 11.5.2005, 06:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Цитата

[Wed May 11 02:00:32 2005] [error] [client 127.0.0.1] /home/site/cgi-bin/materials/p1010876.jpg is not executable; ensure interpreted scripts have "#!" first line
[Wed May 11 02:00:32 2005] [error] [client 127.0.0.1] (2)No such file or directory: couldn't spawn child process: /home/site/cgi-bin/materials/p1010876.jpg

Наверное у тебя графический файл лежит в рабочем каталоге, вот он и говорит тебе о том, что не может запустить файл на выполнение, так как в нём, в первой строке не указан путь к Perl интерпретатору, потому как его там и не должно быть. Вобщем вынеси все файлы .xls, .pdf, .jpg, .gif и т.д. из каталога /cgi-bin, затем измени пути к ним в БД.

Удачи.

Это сообщение отредактировал(а) korob2001 - 11.5.2005, 09:32


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Guest
Дата 11.5.2005, 13:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо, но после перенесения в другую папку запускаются только картинки, да и то, только в текущем окне?
  Вверх
mad_doc
Дата 11.5.2005, 13:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











это сверху я был
  Вверх
korob2001
Дата 11.5.2005, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



А что значит запускается???? Покажи часть кода, где ты запускаешь один из этих файлов.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Guest
Дата 11.5.2005, 16:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код как код <a href=$data_path$arc[5] target=_blank>Файл</a>
  Вверх
korob2001
Дата 11.5.2005, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Вообще-то всё верно и не может быть, что бы такая ссылка открывала документ в текущем окне. Скорее всего скорее всего проблема в путях. Попробуй создай в корне ( рядом с /cgi-bin ), каталог /files, т.е. у тебя должна получиться такая структура:

Код

корень__
        |
        /cgi-bin/_
        |         |
        |         рабочие файлы .pl .cgi
        |         рабочие файлы .pl .cgi
        |
        /files/_
                |
                файлы .doc, .pdf, .jpg и т.д.

Теперь измени значения переменных:
Код

$data_path = "/files/";
$arc[5] = "имя файла.pdf";

Насколько я понял, то елеменит массива $arc[5] инициализируется из БД, если да и в БД указанны только имена файлов, то ничего менять не нужно.

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

<a href="${data_path}${arc[5]}" target="_blank">

Просто если у тебя в пути будет присутствовать хоть один пробел, то браузер тебя может не понять, если путь не будет захвачен в кавычки.

Если все вышесказанное не поможет, то попробуй изменить путь в переменной $data_path, на полный:
Код

$data_path = "http://твой_домен.ru/files/";


Это сообщение отредактировал(а) korob2001 - 11.5.2005, 16:29


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Guest
Дата 11.5.2005, 19:19 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо, справился!
Проблема была действительно в путях.

  Вверх
maddoc
Дата 14.5.2005, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 364
Регистрация: 11.5.2005

Репутация: нет
Всего: 1



Опять проблемаsmile
Закачиваю файл, данный код имеется в 4 местах, в трех все ок, а в четвертом
не работает, проблема с тем, что while не отрабатывает
Передаю $path как и везде это обычная форма type=file
Везде ок, а тут?

while($bytesread=read($path, $buffer, 512))
{$binfile.=$buffer;}

$pathname = $path;
$position = rindex($pathname, "\\") + 1;
$filename = substr($pathname, $position);


open F,">$data_pic_path$filename";
binmode F;
print F $binfile;
close F;


--------------------
"Безвыходных положений не бывает" (с) Камасутра
PM MAIL   Вверх
korob2001
Дата 14.5.2005, 02:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Цитата

$position = rindex($pathname, "\\") + 1;

А в переменной $pathname путь точно указан с обратными слешами???

ЗЫ: А зачем ты читаешь весь файл в пременную ( в память ), а затем эту переменную загоняешь в файл. Записывай всё в файл в течении цикла, много памяти сэкономишь.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
maddoc
Дата 14.5.2005, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 364
Регистрация: 11.5.2005

Репутация: нет
Всего: 1



Так вот в этом то и проблема, цикл не выполняется (while) , а
position = rindex($pathname, "\\") + 1; выполняется правильно(она
извлекает название файла и его расширение из строки $pathname, при то удачно)



--------------------
"Безвыходных положений не бывает" (с) Камасутра
PM MAIL   Вверх
korob2001
Дата 14.5.2005, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Попробуй так.
Код

$pathname = $path;
$position = rindex($pathname, "\\") + 1;
$filename = substr($pathname, $position);
open(  F, "> $data_pic_path$filename" ) or die $!;
          binmode F;
          binmode $path;
          print F $binfile while ( read( $path, $buffer, 512) );
close( F );

Много памяти сэкономишь. smile

Зы: проблема в этой строке:
Код

while($bytesread=read($path, $buffer, 512))

Для чего тут переменная $bytesread ????


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
maddoc
Дата 14.5.2005, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 364
Регистрация: 11.5.2005

Репутация: нет
Всего: 1



да, проблема именно в этой строке,
а именно в том что переменная $buffer
остается пустой, и сам цикл
while($bytesread=read($path, $buffer, 512))
не срабатывает,
хотя переменная $path не пустая, и там все ок с путями


--------------------
"Безвыходных положений не бывает" (с) Камасутра
PM MAIL   Вверх
maddoc
Дата 15.5.2005, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 364
Регистрация: 11.5.2005

Репутация: нет
Всего: 1



smile

Добавлено @ 01:34
smile забыл multipart\form-data

Это сообщение отредактировал(а) maddoc - 15.5.2005, 01:30


--------------------
"Безвыходных положений не бывает" (с) Камасутра
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0569 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.