print "Content-type: text/html; image/jpeg"
Не меняйте заголовок на это. У вас не может быть нескольких типов контента для одного документа (исключая многокомпонентные документы, но браузеры их не поддерживают, и это неправильный формат).
Вы доставляете документ HTML со ссылкой на изображение в нем. На изображение будет отдельный запрос и ответ.
print "Content-type: text/html"
Или лучше:
print "Content-type: text/html; charset=utf-8"
(Предполагается, что вы используете utf-8, которым вы и должны быть).
print """<html>
Ваш Doctype отсутствует. Это вызовет режим причуд, который нежелателен. У вас также есть много унаследованных презентационных разметок, которые должны быть заменены CSS.
<img src="cat.jpeg" alt="cat" width="304" height="228"/>
Контекст предполагает, что изображение является декоративным, поэтому альтернативный текст, вероятно, должен быть ""
(см. Альтернативные тексты в IMGS ), но в действительной ссылке на изображение нет ничего плохого.
Но даже если картинка находится в том же каталоге, что и мой скрипт cgi
Так как HTML вроде бы в порядке. Вы должны проверить, что изображение.
Можете ли вы добраться до изображения, введя URL-адрес напрямую?
Что говорят логи веб-сервера при попытке?
Возможно, ваш сервер настроен так, чтобы пытаться обрабатывать все в каталоге как исполняемый файл, независимо от его расширения, поэтому он может пытаться запустить образ, как если бы это была программа CGI (которая, очевидно, будет потерпеть поражение). Если это так, то вы можете переместить изображение или изменить конфигурацию сервера.
И я только что заметил этот комментарий:
Я сделал это в своем браузере: localhost / cgi-bin / cat.jpg, и он получил ошибку, я проверил логи, это ошибка формата Exec: exec из '/ home / hossein / public_html / cgi-bin / cat .jpg 'не удалось
Вот что происходит. Перемещение изображения - самое простое решение.