文件上传时出现PHP错误

时间:2012-01-11 21:55:13

标签: php upload header

我一直收到一个PHP错误,“在第8行的/home/jbird11/public_html/grids/upload.php中调用未定义的函数getallheaders()”

上传脚本基本上会将拖入某个区域的图片上传,然后上传。当我拖动图像时,我收到此消息。

这是php文件的前40行左右:

 <?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 个答案:

答案 0 :(得分:2)

来自文档:

  

此函数是apache_request_headers()的别名。有关此函数如何工作的更多信息,请阅读apache_request_headers()文档。

如果您没有使用apache(使用php作为模块),则此功能不可用。

答案 1 :(得分:0)

这是apache related function。也许您没有安装所需的扩展程序?

答案 2 :(得分:0)

来自托管公司的

:只有当PHP作为Apache模块运行时才支持该功能。我们的共享和转销商服务器将PHP作为CGI运行,不幸的是,这无法更改。对由此带来的任何不便,我们深表歉意。

如果您的网站绝对需要该功能,则需要考虑升级到VPS,在这种情况下,可以根据需要安装PHP。

答案 3 :(得分:0)

您可以使用此代码确保您具有不依赖于服务器软件配置的此类功能:

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;
  }
}