php提示 内存位置访问无效 解决方法总结

 更新时间:2016年11月25日 17:39  点击:1809
本文章收集了关于在使用php时出现错误提示 PHP“内存位置访问无效”的解决方法总结,有需要的朋友可参考一下。

新配置的PHP环境,或者刚做过配置改动,比如新加载的DLL扩展,访问页面,可能会出现“内存位置访问无效。”的错误。主要原因是DLL扩展加载失败。

我们就需要找到是哪一个DLL文件加载出现了问题。排查方法是:

将php.ini中

 代码如下 复制代码

display_startup_errors = Off
改为

display_startup_errors = On 。

这时访问php页面,服务器上会弹出php错误的提示对话框,你就可以明确看到是哪一个dll文件加载失败,有时会有多个dll文件加载失败,需要你先分号(;)注释掉php.ini中提示那个dll后继续访问如此反复排查。

如我打开

 代码如下 复制代码
display_startup_errors = On

出现

Warning  Cannot load module ‘SQLite’ because required module ‘pdo’ is no loaded


解决办法也很简单了,因为加载php_sqlite.dll时未加载到php_pdo.dll文件,所以运行phpinfo()函数时提示内存 位置访问无效。找到php.ini配置文件,然后去掉

 代码如下 复制代码
”;extension=php_pdo.dll”前面的分号, extension=php_sqlite.dll


把出问题的dll都用分号(;)注释掉后,php就可以正常运行了。

如果上面方法无法解决,可参考下面方法

打开php目录开始调试……花了一点时间总算找到了根源

如果你也碰到这个问题那么你也来试一下以下我的解决方案:

打开php的安装目录编辑php.ini这个文件

搜索下面的字段

 代码如下 复制代码

extension=php_exif.dll

找到后在前面加一个;分号

如下:

 代码如下 复制代码

;extension=php_exif.dll

保存重启iis再访问一下php文件看看能否打开了 是否没有出现内存位置访问无效了

根据我的经验php与mysql中出现乱码一般都是文档编码的问题如 gbk,uft8,gb2312等与页面编码不一致,下面我总结了phpMyAdmin显示中文乱码的解决方法。

先看如图

解决1

php.ini没有extension=php_mysql.dll

碰到这个问题后一般打开phpmyadmin就会出现

乱码错误

我们把php里面的libmysql.dll复制到c:\windows\system32或者c:\winnt\system32

然后重新启动电脑就行

解决2

下面是我的修改过程:
打开 phpMyAdmin 根目录中 libraries/select_lang.lib.php 文件;
找到:

 

 代码如下 复制代码
'zh-gb2312'         => array('zh|chinese simplified', 'chinese_simplified-gb2312', 'zh', '中文'),


将其改为:

 

 代码如下 复制代码
'zh-gb2312-utf-8'         => array('zh|chinese simplified-UTF8', 'chinese_simplified-gb2312', 'zh', '中文'),


再找到:

 

 代码如下 复制代码
'gb2312'       => 'gb2312',


将其改为:

 

 代码如下 复制代码
'gb2312'       => 'latin1',

保存文件退出。

然后从浏览器打开 phpMyAdmin ,在首页选择 Language 为:中文 -Chinese simplified-UTF8

然后打开数据表看看里面的中文是不是已经可以正常显示了:)


解决三


Mysql中的表默认是使用latin1编码的,但内容如果是通过mysql命令等进行添加操作,一般都是gb2312编码插入的,直接在phpmyadmin上 使用语言:中文 - Chinese simplified 下查看是乱码

一、打开 libraries/select_lang.lib.php,查找 $available_languages 数组,在其最后添加一项数据:

Php代码

 代码如下 复制代码
1.'zh-gb2312-utf-8' => array('zh|chinese simplified latin1', 'chinese_simplified-gb2312', 'zh', '中文')  
'zh-gb2312-utf-8' => array('zh|chinese simplified latin1', 'chinese_simplified-gb2312', 'zh', '中文')

注:中文 代表是“中文”两个字。

二、再搜索 $mysql_charset_map 找到这个数组,将其中的一项值 'gb2312' => 'gb2312' 改成 'gb2312' => 'latin1'。

三、重新打开phpmyadmin。语言选择 中文 - Chinese simplified latin1


这时再打开latin1编码的表,就可以看到乱码已经不在了:

我用的linux系统,今天使用phpmyadmin时出现Wrong permissions on configuration file, should not be world writable!错误提示,

查资料一看,原来phpMyAdmin要在755权限下才能正常工作(777不行)。

所以解决办法也就来了:

cd到phpMyAdmin上级目录,

 代码如下 复制代码

chmod -R 755 phpMyAdmin

在我的linux系统用

用以下命令

 代码如下 复制代码
chmod -R 755 /home/wwwroot/phpmyadmin

这个问题就解决了。

今天把php版本升级了一下,突然就出现了Deprecated: Function set_magic_quotes_runtime() is deprecated 错误,下面我们总结了

原因分析:

最近升级了PHP版本,新版本的PHP对set_magic_quotes_runtime()已经关闭
在PHP5.3后此特性(set_magic_quotes_runtime())已经关闭。

而且在PHP6中已经完全移除此特性。


解决办法

你可以注释或者删除掉出错的行,或者是在set_magic_quotes_runtime()前面加@符号。


也可以在程序中如下操作

 代码如下 复制代码

find:
set_magic_quotes_runtime(0);

replace:
ini_set("magic_quotes_runtime", 0);

这样问题就解决了。

phpMyAdmin 缺少 mysqli 扩展。请检查 PHP 配置 的解决方案 有需要的朋友可参考一下。

phpMyAdmin 缺少 mysqli 扩展。请检查 PHP 配置 的解决方案:
缺少 mysqli 扩展。请检查 PHP 配置。

打开你的php.ini->一般在C:WINDOWS目录下。
找到

 代码如下 复制代码
;extension=php_msql.dll
;extension=php_mssql.dll
extension=php_mysql.dll
extension=php_mysqli.dll

需要开启哪个扩展,就把这一行前面的分号去掉就行,注意要重启Apache 或者IIS


解决步骤:
1.看看php的ext目录中是否有php_mysqli.dll文件
如果有,继续下面的步骤。没有的话重新装个php
2.打开php.ini,找到

 代码如下 复制代码
;extension=php_mysqli.dll

把前面的分号";"去掉,改为

 代码如下 复制代码
extension=php_mysqli.dll

3.找到

 代码如下 复制代码
;extension_dir="./ext"

把前面的分号";"去掉,改为(相对于php的安装路径的ext目录)
extension_dir = "e:phpext"
e:php为php的存放目录

4.把php.ini拷贝到c:windows下

5.把libmysql.dll复制到Windows下面的System32目录(这个很关键)

6.重新启动IIS(不是网站)

cmd下运行 iisreset /RESTART 

如果上面方法还不行,可参考下面方法操作

第一步,输出 phpinfo() 看看 MySQL 模块是否成功装载,如果成功装载说明你见鬼了,否则看第二步,

IIS下phpinfo()无mysql模块是何原因?
原先用的php是.msi安装的,后来全部重来了一次,换成压缩包形式安装的。
又照着配置了php.ini,复制到winnt,复制libmysql.dll到system32。
之后测试成功。。。
第二步,查看 extension_dir 的设置是否正确
第三步,查看是否把 libmysql.dll 文件复制到 c:windowssystem32 下

1、没有正确安装Mysql数据库,在系统服务中Mysql相关的服务没有启动   (请查看正确安装Mysql的方法)


2、在系统的 system32(C:windowssystem32) 目录下缺少 libmysql.dll文件,解决方法是找到php目录下的libmysql.dll,并将libmysql.dll复制到C:windowssystem32目录中,然后重新启动Web服务。


3、在C:windows目录下的php.ini文件中,没有将“;extension=php_mysql.dll”中的前面一个“;”去掉,所以不能使用相应功能,解决方法是打开php.ini文件


4、Mysql目录没有读取权限,正确的目录权限如下:
administrator   完全控制
system    完全控制
user    读取加运行
其他的用户权限全部删除(也可保留,但安全性不高,建议删除),然后重启MYsql服务和Web服务。

 

[!--infotagslink--]

相关文章

  • php 中file_get_contents超时问题的解决方法

    file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25
  • HTTP 408错误是什么 HTTP 408错误解决方法

    相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
  • 安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法

    手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21
  • PHP 验证码不显示只有一个小红叉的解决方法

    最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
  • 连接MySql速度慢的解决方法(skip-name-resolve)

    最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢。 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve。原因是默认安装的MySql开启了DNS的反向解析。如果禁用的话就不能...2015-10-21
  • 总结android studio注意事项及打不开等问题解决方法

    经过一段时间的使用,总结了android studio打不开等问题的6种解决方法及android studio注意事项,希望对大家有所帮助。 1 首次运行,建立好项目需要下载一些东西,如果...2016-09-20
  • MySQL ERROR 2013 (HY000)错误解决方法

    当通过 TCP/IP 连接 MySQL 远程主机时,出现 ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 104 。如果是在linux shell命令行中直接打 mysql 命令,...2015-03-15
  • IE6-IE9中tbody的innerHTML不能赋值的解决方法

    IE6-IE9中tbody的innerHTML不能赋值,重现代码如下 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>IE6-IE9中tbody的innerHTML不能复制bug</title> </head> <body style="height:3...2014-06-07
  • Mysql修改datadir导致无法启动问题解决方法

    centos6.2,停止mysqld然后修改/etc/my.cnf datadir的位置,启动mysqld提示FAILED,查看日志 复制代码 代码如下: 120609 11:31:31 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 120609 11:35:12 my...2015-03-15
  • Photoshop提示“此产品的许可证已过期"及“无法开始您的Adobe Photoshop CS5.1 订阅”解决方法

    首先不要鄙视我用Photoshop盗版,实在是贵。现在我们来看看如果你的Photoshop提示“此产品的许可证已过期",还有“无法开始您的Adobe Photoshop CS5.1 订阅”如何解决吧...2016-09-14
  • 小米解锁验证失败怎么办 小米解锁工具登录失败解决方法

    小米手机如果想要刷机就必须要先解锁验证才可以,那么,如果遇到小米解锁验证失败以及小米解锁工具登录失败的现象怎么办呢?对此,本文就为大家进行解答,有需要的朋友来看看。...2016-12-21
  • photoshop字体显示乱码解决方法

    今天小编在这里就来给各位photoshop的这一款软件的使用者们来详细的说一下软件的字体出现了乱码这一问题的解决方法,那么各位有出现这个问题的,下面就来跟着小编一起看...2016-09-14
  • 51安卓模拟器启动失败解决方法

    有部分小伙伴表示自己遇到了51模拟器程序不能打开的情况,那么51模拟器打不开怎么回事?下面我就来为大家分享一下解决的方法,有需要的小伙伴就来看一看吧。 &#8195;&...2017-07-06
  • CentOS下php使用127.0.0.1不能连接mysql的解决方法

    php代码很简单:复制代码 代码如下: $server="127.0.0.1"; println("Begin"); $link = mysql_connect($server,"mysql","mysql"); if (!$link) { die('Could not connect: ' . mysql_error().mysql_errno()); } lin...2015-03-15
  • PHP is_subclass_of函数的一个BUG和解决方法

    is_subclass_of的作用:复制代码 代码如下:bool is_subclass_of ( object object, string class_name )如果对象 object 所属类是类 class_name 的子类,则返回 TRUE,否则返回 FALSE。注: 自 PHP 5.0.3 起也可以用一个字符...2014-06-07
  • mysql too many open connections问题解决方法

    曾经以为在my.cnf写入max_connections = 2000就可以改变mysql的最大并发量,今天查到一个命令,发现服务器的mysql最大连接数为151.控制台,连接上mysql复制代码 代码如下:show variables;这条命令可以看到所有基础配置如果...2014-05-31
  • mysql报错:MySQL server version for the right syntax to use near type=InnoDB的解决方法

    这篇文章主要介绍了mysql报错:MySQL server version for the right syntax to use near type=InnoDB的解决方法,涉及MySQL语句的使用技巧,需要的朋友可以参考下...2016-01-15
  • Can't connect to MySQL server on 'localhost' (10048)问题解决方法

    解决Can't connect to MySQL server on 'localhost' (10048), 一般见于使用mysql的windows 2003服务器. 错误的出现的原因: 应用程序需要快速释放和创建新连接, 但是由于 TIME_WAIT 中存在的连接超过默认值,导致较...2013-10-04
  • PHPMailer在SAE上无法发送邮件的解决方法

    PHPMailer在SAE上无法发送邮件怎么回事呢,我们以前在php5.2.7版本中使用了PHPMailer是可以发,但移到sae中发现无法发邮件了,那么此问题如何解决 在SAE上直接用5.2.7...2016-11-25
  • 帝国CMS登录后台提示"您的Cookie没有开启,不能登陆成功"的解决方法

    如果没有动过文件特别是/e/config/config.php文件的话!请按照如下操作肯定就OK了! 到你的主机或者服务器环境里找到php.ini文件(如果不知道在哪联系你的空间商就行了) 找到如下...2016-05-19