2015-12-20 2 views
-2

Я использую предварительно написанный скрипт, найденный по адресу 1st Web Magazine - Generate Thumbnail On The Fly.Предварительно написанный скрипт PHP, показывающий ошибки - не удается определить, почему существует ошибка

Я скопировал скрипт к моему серверу, но это дает мне следующую ошибку: Parse error: syntax error, unexpected '$ratio_orig' (T_VARIABLE) in /storage/emulated/legacy/www/jollyroger/jollyroger/img/gallery_temp/thumbnail.php on line 23

Я прошел через код, и я не могу определить какие-либо фактические ошибки. Кажется, все в порядке.

Может кто-нибудь взглянуть на этот код и рассказать мне, если я что-то пропускаю? Из того, что я могу собрать, кажется, что что-то в функции list() отбрасывает переменные.

Это код на самом деле в моем файле:

<?php 
// thumb width 
$square = 150; 
$large = 200; 
$small = 100; 
////////////////////////////////////////////////////////////////////////////////// square 
if(isset($_GET["img"]) &&  ($_GET["type"] == "square" || $_GET["type"] == "")){ 
// thumb size 
$thumb_width = $square; 
$thumb_height = $square; 
// align 
$align = $_GET["align"]; 
// image source 
$imgSrc = $_GET["img"]; 
$imgExt = substr($imgSrc,-3); 
// image extension 
if($imgExt == "jpg"){ $myImage = imagecreatefromjpeg($imgSrc); } 
if($imgExt == "gif"){ $myImage = imagecreatefromgif($imgSrc); } 
if($imgExt == "png"){ $myImage = imagecreatefrompng($imgSrc); } 
// getting the image dimensions  
list($width_orig, $height_orig) = getimagesize($imgSrc);   
// ratio 
$ratio_orig = $width_orig/$height_orig; 
// landscape or portrait? 
if ($thumb_width/$thumb_height > $ratio_orig) { 
$new_height = $thumb_width/$ratio_orig; 
$new_width = $thumb_width; 
} else { 
$new_width = $thumb_height*$ratio_orig; 
$new_height = $thumb_height; 
} 
// middle 
$x_mid = $new_width/2; 
$y_mid = $new_height/2; 
// create new image 
$process = imagecreatetruecolor(round($new_width), round($new_height)); 
imagecopyresampled($process, $myImage, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig); 
$thumb = imagecreatetruecolor($thumb_width, $thumb_height); 
// alignment 
if($align == ""){ 
imagecopyresampled($thumb, $process, 0, 0, ($x_mid-($thumb_width/2)), ($y_mid-($thumb_height/2)), $thumb_width, $thumb_height, $thumb_width, $thumb_height); 
} 
if($align == "top"){ 
imagecopyresampled($thumb, $process, 0, 0, ($x_mid-($thumb_width/2)), 0, $thumb_width, $thumb_height, $thumb_width, $thumb_height); 
} 
if($align == "bottom"){ 
imagecopyresampled($thumb, $process, 0, 0, ($x_mid-($thumb_width/2)), ($new_height-$thumb_height), $thumb_width, $thumb_height, $thumb_width, $thumb_height); 
} 
if($align == "left"){ 
imagecopyresampled($thumb, $process, 0, 0, 0, ($y_mid-($thumb_height/2)), $thumb_width, $thumb_height, $thumb_width, $thumb_height); 
} 
if($align == "right"){ 
imagecopyresampled($thumb, $process, 0, 0, ($new_width-$thumb_width), ($y_mid-($thumb_height/2)), $thumb_width, $thumb_height, $thumb_width, $thumb_height); 
} 
imagedestroy($process); 
imagedestroy($myImage); 
if($imgExt == "jpg"){ imagejpeg($thumb, null, 100); } 
if($imgExt == "gif"){ imagegif($thumb); } 
if($imgExt == "png"){ imagepng($thumb, null, 9); } 
} 
// normal 
if(isset($_GET["img"]) && ($_GET["type"] == "large" || $_GET["type"] == "small") ){ 
if($_GET["type"] == "large"){ $thumb_width = $large; } 
if($_GET["type"] == "small"){ $thumb_width = $small; } 
// image source 
$imgSrc = $_GET["img"]; 
$imgExt = substr($imgSrc,-3); 
// image extension 
if($imgExt == "jpg"){ $myImage = imagecreatefromjpeg($imgSrc); } 
if($imgExt == "gif"){ $myImage = imagecreatefromgif($imgSrc); } 
if($imgExt == "png"){ $myImage = imagecreatefrompng($imgSrc); } 
//getting the image dimensions  
list($width_orig, $height_orig) = getimagesize($imgSrc);   
// ratio 
$ratio_orig = $width_orig/$height_orig; 
$thumb_height = $thumb_width/$ratio_orig; 
// new dimensions 
$new_width = $thumb_width; 
$new_height = $thumb_height; 
// middle 
$x_mid = $new_width/2; 
$y_mid = $new_height/2; 
// create new image 
$process = imagecreatetruecolor(round($new_width), round($new_height)); 
imagecopyresampled($process, $myImage, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig); 
$thumb = imagecreatetruecolor($thumb_width, $thumb_height); 
imagecopyresampled($thumb, $process, 0, 0, ($x_mid-($thumb_width/2)), ($y_mid-($thumb_height/2)), $thumb_width, $thumb_height, $thumb_width, $thumb_height); 
if($imgExt == "jpg"){ imagejpeg($thumb, null, 100); } 
if($imgExt == "gif"){ imagegif($thumb); } 
if($imgExt == "png"){ imagepng($thumb, null, 9); } 
} 
?> 

Даже эта линия в моем редакторе выделяется красным цветом, который указывает на ошибку, но так как переменная запуска ошибки PHP это один не показал в все журналы. Рассматривая эту строку, я не вижу ничего плохого.

if(isset($_GET["img"]) && ($_GET["type"] == "large" || $_GET["type"] == "small") ){

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

Также этот скрипт находится в том же каталоге, что и мои файлы изображений. Мой тестовый URL-адрес выглядит так: http://localhost:8080/jollyroger/jollyroger/img/gallery_temp/thumbnail.php?img=1959523_1501438810115481_7515978806557307096_n.jpg

+0

Вы уверены, что используете один и тот же скрипт, который вы разместили здесь? Я бы почти поспорил, что вы случайно удалили точку с запятой в строке кода до, в конце 'list ($ width_orig, $ height_orig) = getimagesize ($ imgSrc); ' – ArSeN

+0

Код, указанный здесь, скопирован из моего редактора кода. Если он отсутствует в моем коде, здесь он отсутствует. Вот почему я предоставил ссылку на оригинал. Я не вижу каких-либо различий или причин ошибки. –

+0

Хм, действительно странно. Поскольку в вашем сообщении нет пустых строк, но в источнике, который вы связали, есть несколько в коде, я подозреваю, что вы что-то сделали с ним (по крайней мере, удалите разрывы строк). Поэтому вы можете попробовать следующее: скопировать и вставить сценарий снова со страницы, с которой вы связаны, и просто ничего не меняете. Получается ли у вас такая же ошибка? – ArSeN

ответ

0

Я думаю, что нашел что-то.

у вас есть следующие строки:

list($width_orig, $height_orig) = getimagesize($imgSrc); 

, который кажется очень странным для меня. Вы равны функции функции, которая может вызвать ошибку на следующей строке.

Если это не проблема, то либо вы забыли ;, либо попытались получить доступ к переменной, прежде чем устанавливать ее значение где-нибудь.

+0

Возможно, его можно изменить на нечто вроде '$ getimagesize = getimagesize ($ imgSrc); list ($ width_orig, $ height_orig) - $ getimagesize; '? –

+0

Я не согласен. Вот как работает list(). См. [Руководство по PHP для списка()] (http://php.net/list). Я согласен, что это странно, но хорошо ... вещи часто странны в PHP :) – ArSeN

+0

Теперь вы, ребята, просто сбиваете меня с толку lol –