Php意外的T_String在php4 webhost上但不在php5 localhost上

时间:2011-09-01 15:21:07

标签: php syntax php4

我的php脚本下面遇到了一个非常令人沮丧的问题。一切都在我的本地机器上使用XAMPP正常工作,但当我把它放在网上时,我得到:

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /homepages/38/d220091779/htdocs/roughgiraffed/RG2/portfolio_item_vars.php on line 20

如果有人能快速查看我,或者提供一些建议,我将不胜感激。

错误位于函数底部附近array_push($projectImages, $filePath);正下方的行上。

编辑:即使错误列在第20行(在getImages()中),我删除了下面的类,错误也消失了。当然,我仍然希望这个类能够工作......但这是否意味着它毕竟是我的php版本的问题?

<?php

$pageTitle = "Portfolio";

//return an array of the (non-featured, non-thumb) images within a given project
function getImages($category, $project){
    $projectImages = Array();
    if ($dir = opendir("portfolio/" . $category . "/" . $project . "/")){
        //open each 'file' in the directory
        while($file = readdir($dir)){
            $filePath = "portfolio/" . $category.'/'.$project.'/'.$file;
            //check if it really is a file
            if($file != "." && $file != ".." && $file[0] != '.' && is_file($filePath)) {
                //check if it is an image
                if(getimagesize($filePath)){
                    //ignore featured_image and _thumbs
                    if(!strstr($file, "featured_image") && !strstr($file, "_thumb")){
                        //Add the non-featured, non-thumb image to the array
                        array_push($projectImages, $filePath);
                    }
                }
            }
        }
        closedir($dir);   
    }
    return $projectImages;
}

class ImgResizer {
    private $originalFile = '';
    public function __construct($originalFile = '') {
        $this -> originalFile = $originalFile;
    }
    public function resize($newWidth, $targetFile) {
        if (empty($newWidth) || empty($targetFile)) {
            return false;
        }
        $src = imagecreatefromjpeg($this -> originalFile);
        list($width, $height) = getimagesize($this -> originalFile);
        $newHeight = ($height / $width) * $newWidth;
        $tmp = imagecreatetruecolor($newWidth, $newHeight);
        imagecopyresampled($tmp, $src, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
        if (file_exists($targetFile)) {
            unlink($targetFile);
        }
        imagejpeg($tmp, $targetFile, 85); // 85 is my choice, make it between 0 – 100 for output image quality with 100 being the most luxurious
    }
}

?>

我的Localhost正在运行PHP 5.3.1版

WebHost正在运行PHP版本4.4.9

3 个答案:

答案 0 :(得分:3)

如果您使用PHP5特定的东西,例如PHP5引入的public关键字,PHP4中可能会发生这种奇怪的解析错误。

在计划在PHP4和PHP5下运行相同的源代码时,您可能应该查看官方的PHP5 backward incompatibilties list

摘录:

  

向后不兼容的更改

     

虽然大多数现有的PHP 4代码都可以在没有更改的情况下运行,但是   应注意以下向后不兼容的变化:

     
      
  • 有一些新的保留关键字。
  •   
  • strrpos()和strripos()现在将整个字符串用作针。
  •   
  • 非法使用字符串偏移导致E_ERROR而不是E_WARNING。
  •   
     

答案 1 :(得分:2)

你不能在PHP 4中使用__construct()。

您必须使用名称与类名相同的函数。

使用ImgResizer()代替__construct(),或者获得更好的Web主机。 PHP 4很老了。

答案 2 :(得分:1)

感谢评论中的帮助,我确定它实际上是php版本的问题。不过,我不知道为什么它会在第20行给出错误,比违规代码高出10行。