linux中phpMyAdmin错误提示Wrong permissions on configuration file, should not be world writable

 更新时间:2016年11月25日 17:39  点击:1941
我用的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时出现错误提示 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版本升级了一下,突然就出现了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服务。

 

PHP程序员最常用的两个函数莫过于require_once和include了,通过这两个函数,我们可以使用其他类库中定义的类等对象。但很多人在使用包含相同目录下的其他文件时,仅仅简单使用下面的代码进行文件引用:

include性能

 代码如下 复制代码

include('include.php');

当然这种方式并没有错误,只不过在效率上它比下面的方式要稍稍差些:

 代码如下 复制代码

include(realpath(dirname(_FILE_)).DIRECTORY_SEPARATOR.'include.php');

这种方式我们可能需要输入更多一些,但相对于前面那种需要PHP引擎去include_path 中迭代查找所有名称为'include.php’才能查找到相应对象来说,dirname(__FILE__)这种绝对路径的指定会让系统迅速定位到相应文件。

在PHP中常量__FILE__ 其实跟C#中的AppDomain.CurrentDomain.BaseDirectory非常类似,它返回的是当前代码正在执行的代码所在文件的绝对路径。而函数dirname()则返回其父文件夹路径。

另外一个更查找效率高,并且书写简单的方式是include('./include.php'),这相当于告诉系统查找当前路径下的'include.php’文件。

在大型系统中我们常常使用另外一个更好的方式,我们常常在路由文件或其他初始化文件中加入如下代码:

 代码如下 复制代码

define('APP_PATH',realpath(dirname(_FILE_)));

这相当于给系统添加了一个全局变量来指出系统根目录,当我们后面需要引用某具体路径下的文件时我们就可以使用如下代码了:

 代码如下 复制代码

include(APP_PATH.DIRECTORY_SEPARATOR.'models'.'User.php');


autoload与include性能比较

例如有以下四个脚本:

 代码如下 复制代码
#file:include1.php
include 'include2.php';
//@todo something#file:include2.php
//@todo something#file:script1.php
include 'include2.php';
//@todo something
#file:script2.php
include 'include1.php';
include 'script1.php'
//@todo something

当执行script1.php时, include ‘include2.php’; 这行代码被执行了一次。而执行script2.php时,这行代码被执行了两次。
这里只是一个简单的例子,在实际的项目中,include2.php被include的次数可能更多。这样反复的include,是否会影响性能呢?为此我写了个脚本来测试。

 代码如下 复制代码

#file:SimpleClass.php
class SimpleClass {
        public function __construct() {
                echo get_time() . "rn";
        }
}

#file:php_include.php
for($i  = 0;$i < $loop;$i++) {
        include_once "SimpleClass.php";
        new SimpleClass();
}

当$loop值为1时,脚本耗时约0.00018906593322754秒,当$loop为1000时,脚本耗时约0.076701879501343秒。
如果我们用autoload实现呢?

 代码如下 复制代码

#file:php_autoload.php
function __autoload($class_name) {
        include_once $class_name . '.php';
}for($i  = 0;$i < $loop;$i++) {
        new SimpleClass();
}

在这段代码中,我定义了__autoload函数,几乎一样的脚本,当$loop为1时,耗时0.0002131462097168秒,而当$loop为1000时,耗时仅为前面代码的1/7,0.012391805648804秒。
但请注意看SimpleClass的代码,其中输出了一行字符串,如果去掉这行输出后再比较,会是什么样的结果呢?
在$loop同为1000的情况下,前者耗时0.057836055755615秒,而使用了autoload后,仅仅0.00199294090271秒!效率相差近30倍!
从上面的测试可以看出,当文件仅仅被include一次,autoload会消耗稍微多一点的时间,但如果在文件被反复include的情况下,使用autoload则能大大提高系统性能。
至于是否要使用autoload来解放程序员,这就仁者见仁,智者见智了。在我看来,条件允许的前提下,牺牲这一点性能(某些情况下,甚至可能是提升性能)更为便捷的开发,是值得的。


include()和require()性能


对include()来说,在 include()执行时文件每次都要进行读取和评估;

而对于require()来说,文件只处理一次(实际上,文件内容替换了require()语句)。

这就意味着如果有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高。

另一方面,如果每次执行代码时相读取不同的文件,或者有通过一组文件叠代的循环,就使用include(),

因为可以给想要包括的文件名设置一个变量,当参数为include()时使用这个变量。

[!--infotagslink--]

相关文章

  • php错误提示 open_basedir restriction in effect 解决

    今天在帮助一个朋友配置一台服务器时发现网站配置好了缓存目录读写不成功,在打开错误时发现提示 Warning: file_exists() [function.file-exists]: open_basedir restr...2016-11-25
  • phpmyadmin config.inc.php配置示例

    phpmyadmin config.inc.php配置示例...2013-09-29
  • phpMyadmin创建数据库和设置用户权限图解

    phpmyadmin是一款很不错的WEB对mysql数据库管理软件,如果你想创建数据库与设置用户权限我们必须操作用户的很高的权限,如ROOT权限,下面我来给大家介绍介绍。 先来配...2016-11-25
  • 使用phpMyAdmin批量修改Mysql数据表前缀的方法

    多个网站共用一个Mysql数据库时,为使数据库管理不混乱,一般采用不同的网站使用不同前缀名的方式进行区分。而如何批量修改已有数据库的前缀名呢?全部导出修改后再导入?还是一个表一个表的修改?今天我要介绍的是相对简单的...2015-10-21
  • 修改mysql密码phpmyadmin不能登录

    出现phpmyadmin不能登录是我在修改我mysql服务器密码之后导致的,后来百度了相关的原因,原来是修改了mysql密码之后我们还需要在phpmyadmin目录中去修改config.inc.php中...2016-11-25
  • phpmyadmin不能登录,无任何提示的问题解决

    昨天有一朋友说自己的phpmyadmin不能登录并且无任何提示了,问我怎么解决,下面我来分享一下关于phpmyadmin不能登录问题总结. phpmyadmin不能登录没有提示 解决方法:...2016-11-25
  • phpMyAdmin 高级功能设置的方法图解

    phpmyadmin还有高级功能可能大部份站长不知道吧,今天本文章就来给大家介绍phpMyAdmin 高级功能设置的方法图解,希望文章对大家会有所帮助。 phpMyAdmin 安装后,默认...2016-11-25
  • phpmyadmin写入一句话木马的测试

    下面我们一起来看看一篇关于phpmyadmin写入一句话木马的测试教程,希望此教程能够对各位有帮助。 方法一,一句话木马偶尔拿到一个config中,发现是root,且还有phpmyadmi...2016-11-25
  • Notice:undefined index ..错误提示解决方法

    这句是在php开发中会碰的一些问题,看这提示我们都知道是变量未定义,那么下面来解决Notice:undefined index方法, 一,这个因为是变量未定义我们只要找到相关的位置加...2016-11-25
  • phpmyadmin无法登录提示please check errors given in your PHP

    下面来给各位同学介绍关于phpmyadmin无法登录提示please check errors given in your PHP and/or webserver,希望例子对各位有帮助。 今天帮别人弄网站的时候要...2016-11-25
  • php提示 Warning: touch() [function.touch]: Utime failed: Permission denied in错误

    在使用php程序时提示Warning: touch() [function.touch]: Utime failed: Permission denied in错误,下面一起来看看此问题的解决办法。 使用timthumb.php出现Warni...2016-11-25
  • IIS 环境下配置PHP5+MySql+PHPMyAdmin

    虽然主要是做.net开发的,但是,时不时的还要搞一下php,但是,php在windows下的配置,总是走很多弯路,正好前几天又配置了一下,因此总结在这里,做为自己的备忘,也希望给遇到问题的朋友们提供一些帮助。...2016-01-27
  • phpmyadmin无法登陆无响应问题解决办法

    phpmyadmin无法登陆无响应一般是session或cookie设置问题了,下文小编也是因为cookie与 session目录设置问题导致phpmyadmin不能正常登录了。 之前由于修改php.ini...2016-11-25
  • phpmyadmin不能登录解决方法总结

    下面总结一些在开发中碰到的phpmyadmin不能登录解决方法,有需要的朋友可参考参考。 错误 MySQL 返回: #1045 - Access denied for user 'root'@'localhost' (using...2016-11-25
  • php错误提示:Call-time pass-by-reference has been deprecated

    今天在写引用时突然出现了Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, mo...2016-11-25
  • phpmyadmin超时或响应慢的解决办法

    phpmyadmin超时或响应慢的原因我分析有两种,超时就是设置时间不够,默认为1800秒了,而反应慢估计是phpmyadmin自动检查更新导致的,下面我来具体解决一下操作方法。 今...2016-11-25
  • php include提示failed to open stream: Permission denied in错误

    出现failed to open stream: Permission denied in是apache运行用户没用权限去访问指定的文件了,所以导致目录文件打不开了。 在打开浏览器时提示 Warning: includ...2016-11-25
  • phpMyAdmin2.1.0存在两个漏洞

    phpMyAdmin ( http://www.phpwizard.net/projects/phpMyAdmin/ ) 是一款管理 MySQL 数据库的 PHP 工具,具有基于 WEB 的界面。但是发现它存在漏洞。可选择安装新发布稳...2016-11-25
  • 个人空间上安装phpMyAdmin方法

    个人空间上安装php教程myadmin方法 当然你有mysql教程数据库教程。 首先 下载 一份最新版的phpmyadmin mysql管理器。 解压后得到一个phpmyadmin的目录(你可以改名) 找到...2016-11-25
  • phpmyadmin出错:缺少 mcrypt 扩展,请检查 PHP 配置与phpmyadmin无法加载

    phpmyadmin出错:缺少 mcrypt 扩展。请检查 PHP 配置。phpmyadmin无法加载解决方案: 今天配置phpMyAdmin出现了这个错: 无法载入 mcrypt 扩展,请检查 PHP 配置 出...2016-11-25