
如果是你自己的服务器原因就很多了
1服务器资源超载.
如果你查到某个进程消耗过多资源,可以用kill命令强制关闭这个进程,只需输入该进程的进程号
2.文件权限设置错误
那么后台目录和文件的权限默认应该是755,而图片,文字等html文件应该是644,所以如果在刚刚上传文件后出现500错误,应该主要检查文件权限设置。
可以使用FTP软件选中所有文件,然后批量修改文件权限。
3 .htaccess文件写入错误的代码
在使用某些wordpress SEO插件的时候,插件会改写.htacess文件,如果语法错误的话就有可能造成500错误!
在.htaccess文件中,可能因为添入了一些与源文件冲突的代码。所以为了检测到错误语句,最好的方法是为语句添加注释来逐条验证。因为注释之后,语句就不再起作用。
逐条添加“#”在语句前面,如
DirectoryIndex default.html
AddType application/x-httpd-php5 php
你可以添加#到该命令前,从而实现注释效果:
DirectoryIndex default.html
#AddType application/x-httpd-php5 php
这个方法可以迅速定位错误的命令,如果你找不到错误的段落,可以尝试把所有的命令全部添上注释然后反过来逐条删除#检查错误!
判断出错误语句之后,可以删掉#恢复正常!
一、错误类型:PHP致命错误
Error type: PHP Fatal error
Fatal error: Call to undefined function (a) in (b) on line (c)
二、错误描述:
该错误报告表示你正企图调用未经定义的函数(function),其中
a----表示未定义的函数名;
b----出现该段脚本的路径;
c----企图调用未定义函数的行号。
d----第二次定义该函数时的行号。
三、原因及解决方法:
原因1:你的确没有声明过该函数。例如,直接调用下面的函数
myFunction()// 这里根本就没有这个函数
结果如下
Fatal error:Call to undefinedfunction myFunction()in(path) on line 1
解决:
仔细检测你的程序中是否声明过该函数。
原因2:你在函数声明时用的名称和你在调用时用的名称不相同,例如
function myFunction(){// do something}myFuntion()// 这里少写了一个字母C
解决:这是很多初学者最容易犯的一个错误。有时候因为少写,或者多写,写错一个字母而导致很长时间都检查不出来。
原因3:你在老版本的PHP下调用新版本的PHP内置函数而产生的错误。因为你的老版本中这个PHP内置函数根本就不存在。例如,你在PHP老版本中调用mime_content_type()
Fatal error:Call to undefinedfunction mime_content_type()
解决:翻开PHP手册仔细核对你所使用的内置函数到底适用于PHP的哪些版本。在PHP手册当中对每一个内置函数都注明了详细的版本限制。例如(PHP 4 >= 4.3.0, PHP 5).所以,解决办法就是升级你的PHP版本,或者改换同类型的其他内置函数。
原因4:你对该函数的调用代码,写在了与函数声明不同的文件中。例如,你在a.php文件中写了这样的代码
myFunction()
而你的函数声明却在b.php中
function myFunction(){// do something}
解决:这种情况一般发生在PHP初学者身上,他们在调用函数时却忘了PHP不会自动的进行文件关联或引用。也就是说上面的情况中a.php与b.php根本就不会产生任何关系。这个时候你需要使用include()之类的函数将两者关联起来。
原因5:你对该函数的调用代码,写在了与函数声明不同的文件中,你也引入了该文件。但是你的函数调用代码位于引入文件代码之前。例如,你在a.php执行函数调用,而在b.php中声明函数。
a.php代码
myFunction()include('b.php')
b.php代码
function myFunction(){ echo '123'}
解决:像上面的代码这样,在执行时就会报错。因为PHP在执行函数调用时找不到该函数的声明。所以,绝对不要把函数的调用写在函数声明文件被引入之前。当然,如果你是在同一个php文件当中,你完全可以把调用函数写在函数声明之前。
原因6:你连续两次使用相同名称来定义一个函数,例如
function myFunction(){}
function myFunction(){}
结果如下
Fatal error:Cannot redeclare myfunction()(previously declared in(path):2)in(path) on line 1
解决:
找到已经声明过的函数,看看是什么需要导致你再次定义了它。如果只是单纯的忘记之前已经定义过,那么将其中一个声明删除掉就是。当然,你的情况可能给复杂。比如你的脚本文件排列异常混乱,并且你可能使用了大量的include()之类的函数,这将导致你很难从混乱的代码当中理清思路。
你使用的是PDO扩展来驱动mysql,而这个提示,就是告诉你没有到找PDO这个类,即是PDO扩展没有成功加载。1、写入测试文件,内容 <?php phpinfo()?>看看有没有关于pdo的内容。
2、看看php.ini是不是把pdo_mysql.dll注释了,打开它。(去掉前面的分号 )
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)