php Fatal error: Call to undefined function imagecreatefromjpeg()

 更新时间:2016年11月25日 17:37  点击:2313
imagecreatefromjpeg函数是一个图像处理函数,但在使用中发现Fatal error: Call to undefined function imagecreatefromjpeg()错误了,下文小编整理了一些教程,大家一起来看看吧。

代码

 代码如下 复制代码

if(!imagecreatefromjpeg("./testimg.jpg"))
{
echo "imagecreatefromjpeg(testimg.jpg) failed!n)";
}
else
{
echo "imagecreatefromjpeg(testimg.jpg) succn)";
}

如果你使用此函数提示php Fatal error: Call to undefined function imagecreatefromjpeg()

这个错误是因为没有安装gd 的jpeg, 虽然你用phpinfo 查看有gd但 gd 不支持 jpeg

安装前我的phpinfo 如下:
gd
GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.2.1
GIF Read Support enabled
GIF Create Support enabled
PNG Support enabled
libPNG Version 1.2.10
WBMP Support enabled
XBM Support enabled

显然gd 没有支持jpeg 的,下面要安装 gd中的 jpeg

 代码如下 复制代码

1、找到php 源码目录
2、进入 ext/gd 目录
3、/usr/local/php/bin/phpize
4、./configure –with-php-config=/usr/local/php/bin/php-config –with-jpeg-dir –with-freetype-dir
5、make && make install
6、重启 httpd

安装后查看phpinfo

gd
GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.2.1
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 6b
PNG Support enabled
libPNG Version 1.2.10
WBMP Support enabled
XBM Support enabled

很显然多了个 JPEG Support enabled

以windows下的php+apache

首先,打开php.ini,找到“extension=php_gd.dll”,然后去掉前面的“;”注释,重启apache即可。

如果还出现此类问题,先检查php.ini的extension_dir值是哪个目录,在那个目录下检查有无php_gd.dll,没有的话请下载php_curl.dll,再把php目录中的libeay32.dll和ssleay32.dll拷到c:windowssystem32里面,重启apache,OK!

最近在工作中小组到一个cookie跨域设置的问题,然后就一些知识点进步了梳理,然后到网上搜索这方面的资料。本来这些都是一些基础知识,但是网上很多资料参差不齐,有的错误的文章来被转了很多次,所以我自己通过测试来整理这些问题。

第一个:cookie的setDomain属性到底能不能设置成当前应用程序所在的域之外的域名。比如我当前应用的域名是:www.test1.com,那么我在当前的应用里设置cookie的Domain为".test2.com",会有什么效果?浏览器会不会接受服务器返回来的cookie?假如浏览器真的接受了服务端返回的cookie,那么浏览器下次真的访问www.test2.com时到底会不会把之前的cookie给带上?

现在我写了两个web程序,每个web程序都有一个servlet,同时修改host文件,第一个应用的域名是:www.test1.com,第二个域名是:www.test2.com。并且使用火狐狸和IE10来做测试,测试过程如下:

1)首先在www.test1.com的程序中设置cookie的domain为“.test2.com”,访问该应用,在这种情况下IE和火狐狸的浏览器都会接受cookie,而且其Domain很明确是.test2.com,这里就说明cookie是可以写到浏览器里的,而不是很多地方说的被忽略云云。但是如果再次访问的时候,无论是访问www.test1.com或者是www.test2.com都不会把这个cookie带过去。这就验证了cookiede setDomain这个方法是不能设置当前应用所在域之外的域名的,之前看到很多文章说的结论是在www.test1.com的应用中设置cookie的domain为www.test2.com,则访问www.test2.com时就能在test2.com的应用中取到该cookie,这完全是不负责任的扯淡,那种情形只适合共同根域名的情况。辩证想一想都不可能,否则我就能操纵百度或者阿里的网站来读取我们自己定义的cookie?

2)现在我们设置www.test1.com的域名为自己,那么如果我们在www.test1.com的网页中使用Iframe嵌入www.test2.com的应用,那么会是什么结果?

首先我们访问了www.test1.com,这个时候www.test1.com和www.test2.com的cookie都写到浏览器里了,无论是在IE还是在火狐狸里都是如此,那么再次访问www.test1.com的时候,IE和火狐狸这个时候不同的地方就显示出来了。这个时候IE只会把www.test1.com的cookie带上,而不会带www.test2.com的cookie的(也就是说在www.test2.com的应用里是拿不到cookie的),而且这个时候你再次专门访问www.test2.com也不会拿到之前明明已经写入到浏览器里www.test2.com域名下的cookie。而如果在火狐狸里,则www.test1.com的应用中会取到www.test1.com的cookie,而且无论是iframe内嵌或者直接访问www.test2.com的应用里都会拿到自己域名下的cookie。这种情况使用<img>和<script>标签获取cookie是一样的道理。这样看来IE10的安全级别更高。

3)如果我们非要www.test1.com中利用iframe内嵌www.test2.com的方式来将test2.com域名下的cookie带过去给www.test2.com服务应用,那该怎么办?

这个非常简单,设置www.test2.com的head,比如response.setHeader设置P3P。关于P3P协议网上资料一大堆,大家可以自己看看。这里要注意,我们在www.test1.com使用iframe嵌入www.test2.com的应用,则www.test1.com设置的cookie就是通常意义的第一方cookie,而www.test2.com的cookie就是常说的第三方cookie,我们要设置P3P是要在第3方的程序中设置,这个很多资料里也没有说明白。其实就是www.test2.com的服务端和浏览器协商,让浏览器允许其携带上cookie给服务端。一旦突破这点,再结合referer首部属性就能获取用户的浏览习惯和喜好,像经常购买书籍、电子产品等。比如:A网站嵌入了B网站的一个页面,并且B网站设置了P3P,那么当用户访问A网站的时候会顺便访问B网站,这个时候B网站就随机生成一个ID,将这个ID写入到cookie,并将这个id和referer信息存入自己的数据库。下次,无论是C网站或者其他网站内嵌了B,被用户访问了,也或者是用户又访问A,都会顺便访问B网站并且将referer和id存入数据库,如果用户用的是同一个浏览器并且从来不清理cookie,这样cookie中记录的id就不变,每次访问就会把B的cookie带上,B网站根据cookie中的id和多次存入数据库的referer就能知道你都登录了哪些网站。因为referer的链接说明了所有问题。这样就可以做到对这个人的跟踪和分析。就好比我把我的眼线放在100商店,你访问各个商店时,他们就把你的购买什么的情况告诉我,天长日久我就知道你喜欢买什么了,不知道这个例子是否准确。

暂时先写到这里吧,这个问题也是首次稍微深入探索下,后边根据进展再补充吧,如果有错误请读者一定指正不胜感激。总之,这种基础知识是设计框架的基石,必须要搞清楚。否则,寝食难安、芒刺在背。

下面来看一篇关于phpMyAdmin错误信息配置文件现在需要绝密的短语密码(blowfish_secret)问题的解决办法吧,希望例子能帮助到各位。

因为一些特殊原因,我需要对phpmyadmin的配置文件进行修改,但是修改后就出现问题了,一打开phpmyadmin,就出现“配置文件现在需要绝密的短语密码(blowfish_secret)。”

 

phpMyAdmin错误信息配置文件现在需要绝密的短语密码(blowfish_secret)

那就按照他的提示来吧,在配置文件里设置一个密码就是了。
打开phpmyadmin的配置文件 phpmyadmin/config.inc.php(注:php5.0为config.sample.inc.php)

查找 $cfg['blowfish_secret'] 把他的值修改下,任意数字字母都可以,也就是错误信息中提到的设置短语密码。

vi phpmyadmin/config.inc.php

 代码如下 复制代码

<?php
$cfg['Servers'][$i]['auth_type'] = 'cookie'; 
$cfg['blowfish_secret'] = 'www.111cn.net';(其中的www.111cn.net自定义)
?> 

修改以后,以后登入phpmyadmin就方便多了,但一定不要使用空密码,切记!

phpMyAdmin是各大站长常用的一个数据导入导出工具了,但它默认只能导入2MB大小的数据了,如果要导入大数据我们需要进行简单的配置,下文一起来看看吧。

phpMyAdmin使用方便,已成为大多数站长的常用工具,对于小型网站来讲phpmyadmin已经绰绰有余了,但是对于中大型网站,在数据库较为庞大的时候,phpmyadmin就显得力不从心了!

当使用 phpMyAdmin 导入的数据库大小大于 2M 的时候,会出现如下提示:
No data was received to import. Either no file name was submitted, or the file size exceeded the maximum size permitted by your PHP configuration. See FAQ 1.16.

一般情况下,phpMyAdmin最大限制上传2M以内的文件,但是当网站运营一段时间后,即使把sql格式的数据库压缩成zip格式,想变成2M以内是不太现实的。
个人并不推荐使用phpMyAdmin来导入大数据库,因为大多数用户使用的是虚拟主机,很多文件没有服务器权限是无法修改的,而且phpmyadmin对大数据库的执行效率也非常低,容易出现错误。


导入大数据库的解决方案

推荐使用 BigDump工具 来进行导入大数据库的操作,下载地址和使用方法见:用BigDump工具导入超大MySQL数据库备份文件
如果你很执着一定要用phpmyadmin来进行数据库导入操作,网络上虽然可以找到很多资料,但大多数都不全,只解决了一部分问题,所以我整理出了相对比较靠谱的方案,
以下是我搜集的一些解决phpMyAdmin上传文件大小限制的方法

方案一(简单)

打开phpmyadmin下的配置文件 config.inc.php

 代码如下 复制代码
查找
$cfg['UploadDir'] = ”;
$cfg['SaveDir'] = ”;
给他们赋值
$cfg['UploadDir'] = ‘upload’;
$cfg['SaveDir'] = ‘save’;

修改后如果提示“配置文件现在需要绝密的短语密码(blowfish_secret)。”不用担心,

然后在 phpMyAdmin 的目录下创建两个空目录,upload 和 save,并且把要导入的数据库文件(必须是sql格式,非zip格式)传送到 upload 目录下。
登录phpMyAdmin,点导入(import) 发现多了一个 网站服务器上传文件夹

解决phpMyAdmin导入数据文件最大限制2MB问题


选择网站服务器上传的文件夹里的数据库就可以了,然后点击【执行】按钮就可以顺利导入超大型的数据库了。
方案二(繁琐)

打开PHP配置文件 php.ini

查找 upload_max_filesize 和 post_max_size 把他们的值修改的大一点
如果上传的文件很大,还需进行以下修改

 代码如下 复制代码
max_execution_time(php页面执行最大时间)
max_input_time(php页面接受数据最大时间)
memory_limit(php页面占用的最大内存)

这是因为phpmyadmin上传大文件时,php页面的执行时间、内存占用也势必变得更长更大,其需要php运行环境的配合,光修改上传文件大小限制是不够的。
打开 phpmyadmin 目录下的 config.inc.php 文件
查找 $cfg[‘ExecTimeLimit’]配置选项,默认值是300,需要修改为0,即没有时间限制。

打开 phpmyadmin 目录下的 import.php 文件 修改 $memory_limit 的值

解决phpMyAdmin导入数据文件最大限制2MB问题

说明:首选读取php.ini配置文件中的内存配置选项memory_limit,如果为空则默认内存大小限制为2M,如果没有限制则内存大小限制为10M,你可以结合你php.ini配置文件中的相关信息修改这段代码。

如果你php使用字符编码转换函数 mb_convert_encoding碰到 Call to undefined function mb_convert_encoding()问题,可参考本文章来解决。

在运行程序时发生“Fatal error: Call to undefined function
mb_convert_encoding()”致命错误,这个问题很好解决:

在php.ini中打开extension=php_mbstring扩展即可。

最后重启apache即可

测试

如:

$content = iconv("UTF-8", "gb2312//IGNORE″, $content);

[!--infotagslink--]

相关文章