Ошибка PHP при загрузке файла - PullRequest
2 голосов
/ 12 января 2012

Я получаю сообщение об ошибке PHP: «вызов неопределенной функции getallheaders () в /home/jbird11/public_html/grids/upload.php в строке 8»

Скрипт загрузки в основном берет изображение, которое перетаскивается в область, и загружает его. Когда я перетаскиваю изображение, я получаю это сообщение.

Вот первые около 40 строк файла php:

 <?php

    // Maximum file size
    $maxsize = 1024; //Kb
    // Supporting image file types
    $types = Array('image/png','images/gif','image/jpeg');

    $headers = getallheaders();

    // LOG
    $log = '=== '. @date('Y-m-d H:i:s') . ' ========================================'."\n"
            .'HEADER:'.print_r($headers,1)."\n"
            .'GET:'.print_r($_GET,1)."\n"
            .'POST:'.print_r($_POST,1)."\n"
            .'REQUEST:'.print_r($_REQUEST,1)."\n"
            .'FILES:'.print_r($_FILES,1)."\n";
    $fp = fopen('log.txt','a');
    fwrite($fp, $log);
    fclose($fp);

    header('content-type: plain/text');

    // File size control
    if($headers['X-File-Size'] > ($maxsize *1024)) {
        die("Max file size: $maxsize Kb");
    }

// File type control
if(in_array($headers['X-File-Type'],$types)){
    // Create an unique file name
    $filename = sha1(@date('U').'-'.$headers['X-File-Name']).'.'.$_GET['type'];
    // Uploaded file source
    $source = file_get_contents('php://input');
    // Image resize
    imageresize($source, $filename, $_GET['width'], $_GET['height'], $_GET['crop'], $_GET['quality']);
} else die("Unsupported file type: ".$headers['X-File-Type']);

// File path
$path = str_replace('upload.php','',$_SERVER['SCRIPT_NAME']);
// Image tag
echo '<img src="'.$path.$filename.'" alt="image" />';

Есть идеи, что вызывает эту ошибку? Разрешения возможно? Разрешения установлены на 755. Вы можете увидеть рабочую демонстрацию этого здесь: http://pixelcakecreative.com/grids/

Есть идеи, как это исправить? Заранее спасибо

Ответы [ 4 ]

2 голосов
/ 12 января 2012

Из документов:

Эта функция является псевдонимом для apache_request_headers ().Пожалуйста, прочтите документацию apache_request_headers () для получения дополнительной информации о том, как работает эта функция.

Если вы не используете apache (с php в качестве модуля), эта функция недоступна.

0 голосов
/ 21 января 2013

вы можете использовать этот код, чтобы убедиться, что у вас есть такая функция, не зависящая от конфигурации программного обеспечения сервера:

if (!function_exists("getallheaders"))
{
  function getallheaders()
  {
    $headers = "";

    foreach ($_SERVER as $name => $value)
    {
      if (substr($name, 0, 5) == "HTTP_")
      {
        $headers[str_replace(" ", "-", ucwords(strtolower(str_replace("_", " ", substr($name, 5)))))] = $value;
      }
    }

    return $headers;
  }
}
0 голосов
/ 12 января 2012

от хостинговой компании: похоже, что эта функция поддерживается только тогда, когда PHP запускается как модуль Apache. Наши серверы Shared и Reseller работают под PHP как CGI, и, к сожалению, это нельзя изменить. Приносим извинения за доставленные неудобства.

Если эта функция абсолютно необходима для вашего сайта, вам необходимо рассмотреть вопрос об обновлении до VPS, и в этом случае PHP может быть установлен так, как вам нравится.

0 голосов
/ 12 января 2012

Это apache-связанная функция . Может быть, у вас не установлены необходимые расширения?

...