我的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
答案 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行。