Я знаю, что это, вероятно, очень тривиальная проблема, которую я просто не могу решить, хотя я провел последние несколько часов, ползая в Интернете ..
У меня есть файл image_get.php, который должен отображать файл изображения «keepcalm.png», который находится в том же каталоге, что и файл php.
Я использую класс для обработки всех действий, связанных с изображением.
image_get.php
<?php
include "classes/image.class.php";
include "classes/database.class.php";
$database_sso = new database('SSO'); //will be needed later and is dummy for now
$testimage = new image($database_sso, "1"); //parameters are dummy for now
$testimage->show_image();
?>
image.class.php
<?php
class image{
private $database_image; //Image Database containing all images
private $imageid; //ID of Image in Database
private $filepath; //Path to image file//PUBLIC FUNCTIONS
public function __construct($database, $imageid){
$this->database_image = $database; //Right now this is just a placeholder
$this->imageid = $imageid; //Right now this is just a placeholder
}
public function show_image(){
$remoteImage = $this->get_local_link_from_id($this->imageid); // Right now this returns "keepcalm.png"
header('Content-Type: image/x-png')
$returnstring = readfile($remoteImage);
}
//PRIVATE FUNCTIONS
private function get_local_link_from_id($imageid){
$local_link = "keepcalm.png"; //dummy for now
return $local_link;
}}?>
Вывод, который я получаю, является полным бредом, как можно увидеть здесь -> http://niederrad.no-ip.org/portal/image_get.php
Что мне не хватает?
Я перепробовал много итераций вышеизложенного и совершенно не знаю, как мне поступить …
Попробуй это:
public function show_image() {
// this returns "keepcalm.png"$remoteImage = $this->get_local_link_from_id($this->imageid);
// Set Header
header("Content-Type: image/png"); // More info: http://stackoverflow.com/a/2086406/2332336
// Output the contents of image
readfile($remoteImage);
exit;
}
Если это не работает для вас, это означает, что PHP не может найти локальный образ keepcalm.png
Возможно, потому что это не существует здесь: http://niederrad.no-ip.org/portal/keepcalm.png
(т.е. из сценария (image_get.php
) место исполнения http://niederrad.no-ip.org/portal/
)
Если это так, возможно, вам придется сообщить readfile()
Команда, где изображение находится на вашем сервере. Под этим я подразумеваю указание абсолютного пути к файлу (на сервере Linux) /home/USERNAME/public_html/images/
например)
Если изображение находится на удаленном сервере (как следует из названия вашей переменной), тогда ваш код должен выглядеть следующим образом:
// Output the contents of image
exit(file_get_contents('http://remote-site.com/path/to/'. $remoteImage));
Предполагая, что ваш конфиг PHP имеет allow_url_fopen
установите в true.
Проблема была с BOM, что я нахожу очень странным, поскольку я был уверен, что проверил, чтобы не кодировать с помощью BOM …
Как исправить "Заголовки уже отправлены" ошибка в PHP
Очень хорошее предложение от Cheery.