PDA

View Full Version : سوال: مشکل در ساخت عکس در php 7.2



m.farzamfar
جمعه 02 آذر 1397, 04:08 صبح
سلام دوستان.
من اسکریپن زیر رو برای تولید عکس کپچا استفاده می کردم. توی php 5.3 به درستی کار می کنه ولی وقتی سرور رو آپدیت می کنم به php 7.2 دیگه عکس رو نشون نمیده.
کسی هست راهنمایی کنه؟


session_start();
//Settings: You can customize the captcha here
$image_width = 120;
$image_height = 40;
$characters_on_image = 6;
$font = 'fonts/monofont.ttf';

//The characters that can be used in the CAPTCHA code.
//avoid confusing characters (l 1 and i for example)
$possible_letters = '23456789bcdfghjkmnpqrstvwxyz';
$random_dots = 0;
$random_lines = 20;
$captcha_text_color="0x142864";
$captcha_noice_color = "0x142864";

$code = '';


$i = 0;
while ($i < $characters_on_image) {
$code .= substr($possible_letters, mt_rand(0, strlen($possible_letters)-1), 1);
$i++;
}


$font_size = $image_height * 0.75;
$image = @imagecreatefromstring($image_width, $image_height);


/* setting the background, text and noise colours here */
$background_color = imagecolorallocate($image, 255, 255, 255);

$arr_text_color = hexrgb($captcha_text_color);
$text_color = imagecolorallocate($image, $arr_text_color['red'],
$arr_text_color['green'], $arr_text_color['blue']);

$arr_noice_color = hexrgb($captcha_noice_color);
$image_noise_color = imagecolorallocate($image, $arr_noice_color['red'],
$arr_noice_color['green'], $arr_noice_color['blue']);


/* generating the dots randomly in background */
for( $i=0; $i<$random_dots; $i++ ) {
imagefilledellipse($image, mt_rand(0,$image_width),
mt_rand(0,$image_height), 2, 3, $image_noise_color);
}


/* generating lines randomly in background of image */
for( $i=0; $i<$random_lines; $i++ ) {
imageline($image, mt_rand(0,$image_width), mt_rand(0,$image_height),
mt_rand(0,$image_width), mt_rand(0,$image_height), $image_noise_color);
}


/* create a text box and add 6 letters code in it */
$textbox = imagettfbbox($font_size, 0, $font, $code);
$x = ($image_width - $textbox[4])/2;
$y = ($image_height - $textbox[5])/2;
imagettftext($image, $font_size, 0, $x, $y, $text_color, $font , $code);


/* Show captcha image in the page html page */
header('Content-Type: image/jpeg');// defining the image type to be shown in browser widow
imagejpeg($image);//showing the image
imagedestroy($image);//destroying the image instance
$_SESSION['6_letters_code'] = $code;

function hexrgb ($hexstr)
{
$int = hexdec($hexstr);

return array("red" => 0xFF & ($int >> 0x10),
"green" => 0xFF & ($int >> 0x8),
"blue" => 0xFF & $int);
}

اینم خطی که عکس رو داخل فرم فراخوانی می کنه:


<img src="captcha_code_file.php?rand=<?php echo rand(); ?>" id='captchaimg' >

charcharkh
جمعه 02 آذر 1397, 11:41 صبح
سلام آیا خطا میده یا نه؟؟!!

خطا رو نشون بده فعالش کن تا ببینیم چی مگه؟!

m.farzamfar
جمعه 02 آذر 1397, 11:56 صبح
سلام آیا خطا میده یا نه؟؟!!

خطا رو نشون بده فعالش کن تا ببینیم چی مگه؟!

سلام.
من این گزینه رو توی php.ini فعال کردم:


Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

خطای زیر رو نشون میده:
could not find driver

charcharkh
جمعه 02 آذر 1397, 14:16 عصر
کتابخانه GD نصب هست مطمینی

بایست نسخه مناسب خودش باشه یه phpinfo بزن ببین نضب هست

اگر نبود با این توی ابونتو نصبش میشه

sudo apt-get install php7.2-gd

m.farzamfar
جمعه 02 آذر 1397, 16:06 عصر
کتابخانه GD نصب هست مطمینی

بایست نسخه مناسب خودش باشه یه phpinfo بزن ببین نضب هست

اگر نبود با این توی ابونتو نصبش میشه

sudo apt-get install php7.2-gd

روی لوکال و سرور هر دو من امتحان کردم. کتابخانه GD نصب هست:
gd

GD Support
enabled


GD Version
bundled (2.1.0 compatible)


FreeType Support
enabled


FreeType Linkage
with freetype


FreeType Version
2.9.1


GIF Read Support
enabled


GIF Create Support
enabled


JPEG Support
enabled


libJPEG Version
9 compatible


PNG Support
enabled


libPNG Version
1.6.34


WBMP Support
enabled


XPM Support
enabled


libXpm Version
30512


XBM Support
enabled


WebP Support
enabled




Directive
Local Value
Master Value


gd.jpeg_ignore_warning
1
1

charcharkh
جمعه 02 آذر 1397, 17:50 عصر
خطا رو کامل بزار اینجا بالا فقط یه تیکش رو گذاشتی

m.farzamfar
شنبه 03 آذر 1397, 22:16 عصر
خطا رو کامل بزار اینجا بالا فقط یه تیکش رو گذاشتی

من کامل گذاشتم. چیزی رو حذف نکردم.

charcharkh
یک شنبه 04 آذر 1397, 12:00 عصر
اینو چرا با دوتا پارامتر زدی imagecreatefromstring

اینو بخون
http://www.php.net/manual/en/function.imagecreatefromjpeg.php



اینو بایست بزنی imagecreatetruecolor یا اینو imagecreate

بهرحال من زدم و چند خط کد بعد هم ایراد میگرفت یکبار دیگه کدهاتو بررسی کن.

m.farzamfar
دوشنبه 05 آذر 1397, 00:01 صبح
دوتا پارامتر برای طول و عرض عکسی که درست می کنه هست.
برای من هیچ چیز ایراد نمی گیره. فقط عکس نشون نمیده. ممکنه ایرادها رو اینجا بزارید؟ ممنون

کد ها توی php 5 درست کار می کنند. ولی با php 7 عکس رو نشون نمیدند