iis+php提示An error occurred on the server when processing the URL

 更新时间:2016年11月25日 17:38  点击:1556
使用iis+php环境经常会碰到iis php提示An error occurred on the server when processing the URL错误了,但是在php官网也找不到很好的解决办法。

在几天前帮朋友处理网站搬家后出现的MSSQL数据库链接问题,后来我把它的代码在本地搭建环境测试就发现一个ASP的问题并此解决了,也帮助我朋友解决了问题。所以今天给大家讲下ASP出现的一个错误,虽然ASP的程序已经很少人使用了,但是还是不少的。

  好的,进入我们的主题,首先我们先了解下演示的环境。首先我使用的是Windows 7 旗舰版 32bit 和IIS7.5 的版本。程序是使用了一个简单的CMS系统,语言:ASP。

An error occurred on the server when processing the URL. Please contact the system administrator.

出现的错误是:
An error occurred on the server when processing the URL. Please contact the system administrator.
If you are the system administrator please click here to find out more about this error.

  其实解决这个问题很简单,今天就把它当一节课与大家讲讲。

第一步:启动IIS,打开该站点。在【功能视图】的列表中找到【ASP】

第一步:启动IIS,打开该站点。在【功能视图】的列表中找到【ASP】

第二步:找到【将错误发送到浏览器】的值修改为【True】并应用。

第二步:找到【将错误发送到浏览器】的值修改为【True】并应用。

如果你修改之后,直接预览再看效果。估计是不行的,因为还没有设置好。

Active Server Pages 错误 'ASP 0131'

出现的错误如下
Active Server Pages 错误 'ASP 0131'
不允许的父路径
/admin/login.asp,行 1
包含文件“../Inc/Const.Asp”不能用“..”表示父目录。

 

第三步:这时候我还要设置下【启用父路径】,同样设置为【True】并应用

第三步:这时候我还要设置下【启用父路径】,同样设置为【True】并应用

再看下效果如何吧?

完成

  顺便也在这里解释下,而我根据我理解来介绍呢,简单来说呢?将错误发送到浏览器就是把程序错误信息不用友好的方式展现出来,主要是为了方便调试;启用父路径而是代码中出现了“...”等的路径方式,跟Windows权限继承是一样的。下面内容来自微软官方说明:
将错误发送到浏览器 [scriptErrorSentToBrowser]:
指定 Web 服务器除了将调试详细信息(文件名、错误、行号、描述)记录到 IIS 请求日志中以外,是否还将其写入客户端浏览器。默认值为 True。
启用父路径 [enableParentPaths]:
指定 ASP 页是否允许相对于当前目录的路径(使用“...”表示法),即当前目录之上的路径。默认值为 False。

Tisp:
1.如果浏览器打开任何网站出现问题,可以把IE的【显示友好http错误信息】不要打勾启用来查看此网站的错误信息。

显示友好http错误信息

2.虚拟主机空间的用户可以让服务商来解决此问题。

在mysql数据库连接时碰到Warning: mysql_fetch_array() expects ...错误提示,根据我的经验这个是sql返回的query为空了,我们没有加己判断直接使用了mysql_fetch_array()函数导致的下面我们一起来看问题解决方案。

我的高度代码如下

include("conn.php");

if(!empty($_GET['id'])){
         $sql="select * from news where `id`='".$_GET['id']."'";
         $query=mysql_query($sql);
         $rs = mysql_fetch_array($query);     
}

提示错误了

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in F:xmappwww.111cn.netmylibrarysearch_result.php on line 32

后来我对代码进行升级

if(!empty($_GET['id'])){
         $sql="select * from news where `id`='".$_GET['id']."'";
         $query=mysql_query($sql);
if( mysql_num_rows( $query )
{
         $rs = mysql_fetch_array($query);  
}
else
{
mysql_error();
}  
}

这样就会看到mysql错误信息了,结果是sql语句有问题了,把sql语句进行修改就可以了,

一聚教程小编提示你,导致这类错误是我们语法不规范了,如果要处理只有对sql进行一条条输出处理或在mysql_query(sql) or die(mysql_error()) 这样来处理 本站原创转载必须注明来源http://www.111cn.net/phper/php.html 

在php 中dirname() 函数返回路径中的目录部分,__FILE__而当前运行文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。这是一个魔法变量(预定义常量),在windows中没有问题但在linux中路径出现的问题,下面我们一起来看看路径问题解决方法。

近期在给wordpress开发模板功能时发现,直接使用include(“文件名”)的形式调用其他php代码片段时会出现路径错误。之前服务器环境一直都是iis,未曾出现过类似的BUG,但换成linux服务器后便出现了路径调用错误。在网上搜寻了一番,发现可以在调用时使用dirname(__FILE__)来解决linux服务器下包含文件时的路径错误。

其实主要问题来自于linxu服务器下的站点根目录问题,在linux服务器下包含某个文件时,其路径为/home/web/。如果直接使用include(“/文件名”)的格式,则实际上包含的文件路径为/home/web/文件名。

完整的使用方法为include dirname(__FILE__) . ‘/page.php’

这段代码引用的文件需要与代码所在文件处于同一目录,如果需要调用上一层目录可以使用dirname(dirname(__FILE__))来调用上一层目录的文件。

如果大家在网站更换服务器后遇到包含类问题时,不妨检查一下网站是否有引用路径的错误。建议在书写php包含时就使用dirname(__FILE__)的方法引用文件,以解决多数情况下的引用问题。

有不少喜欢尝新的朋友会碰服务器安装php5.4版本之后dedecms5.7登录后面一篇白茫茫的啊,像下雪一样哦,下面我们来看dedecms后台登录空白问题问题办法。

linux,php5.4, 织梦dedecms后台登录空白,原因:

include/userlogin.class.php,里面有一个keepuser()函数,是用session_register来注册一个session变量,但是在php5.4中已经移除了这个功能

 代码如下 复制代码

把@session_register($this->keepUserIDTag);    注释掉,然后改为
if (!isset($_SESSION[$this->keepUserIDTag]))

如下:
if (!isset($_SESSION[$this->keepUserIDTag]))
//@session_register($this->keepUserIDTag);

我的修改前与修改后的代码


解决方法:找开include/userlogin.class.php文件,查找以下内容:

 代码如下 复制代码

@session_register($this->keepUserIDTag);
$_SESSION[$this->keepUserIDTag] = $this->userID;
@session_register($this->keepUserTypeTag);
$_SESSION[$this->keepUserTypeTag] = $this->userType;
@session_register($this->keepUserChannelTag);
$_SESSION[$this->keepUserChannelTag] = $this->userChannel;
@session_register($this->keepUserNameTag);
$_SESSION[$this->keepUserNameTag] = $this->userName;
@session_register($this->keepUserPurviewTag);
$_SESSION[$this->keepUserPurviewTag] = $this->userPurview;
@session_register($this->keepAdminStyleTag);
$_SESSION[$this->keepAdminStyleTag] = $adminstyle;
PutCookie(‘DedeUserID’, $this->userID, 3600 * 24, ‘/’);
PutCookie(‘DedeLoginTime’, time(), 3600 * 24, ‘/’);

替换成

global $admincachefile,$adminstyle;
if(empty($adminstyle)) $adminstyle = ‘dedecms’;
//@session_register($this->keepUserIDTag);
$_SESSION[$this->keepUserIDTag] = $this->keepUserIDTag;
$_SESSION[$this->keepUserIDTag] = $this->userID;
//@session_register($this->keepUserTypeTag);
$_SESSION[$this->keepUserTypeTag] = $this->keepUserTypeTag;
$_SESSION[$this->keepUserTypeTag] = $this->userType;
// @session_register($this->keepUserChannelTag);
$_SESSION[$this->keepUserChannelTag] = $this->keepUserChannelTag;
$_SESSION[$this->keepUserChannelTag] = $this->userChannel;
//@session_register($this->keepUserNameTag);
$_SESSION[$this->keepUserNameTag] = $this->keepUserNameTag;
$_SESSION[$this->keepUserNameTag] = $this->userName;
//@session_register($this->keepUserPurviewTag);
$_SESSION[$this->keepUserPurviewTag] = $this->keepUserPurviewTag;
$_SESSION[$this->keepUserPurviewTag] = $this->userPurview;
// @session_register($this->keepAdminStyleTag);
$_SESSION[$this->keepAdminStyleTag] = $this->keepAdminStyleTag;
$_SESSION[$this->keepAdminStyleTag] = $adminstyle;
PutCookie(‘DedeUserID’, $this->userID, 3600 * 24, ‘/’);
PutCookie(‘DedeLoginTime’, time(), 3600 * 24, ‘/’);

今天在利用empty()函数判断一个变量是否为null是发现提示Note: empty() only checks variables as anything else will result in a parse error. In other words, the following will not work:empty(trim($name)).错误了,后整一半天找到问题所在了。


你使用empty检查一个函数返回的结果时会报如下的一个致命错误:

Fatal error: Can't use function return value in write context in : ..................

例如:

echo empty(yourfunction(xx, oo));

到PHP手册里面查看,在empty函数描述的地方有以下文字:

Note: empty() only checks variables as anything else will result in a parse error. In other words, the following will not work:empty(trim($name)).

empty() 只检测变量,检测任何非变量的东西都将导致解析错误!

因此,我们不能拿empty来直接检测函数返回的值,需要先把函数的返回值赋给某个变量,然后去用empty检测这个变量。

所以,我们可以写成如下的形式:

$return= yourfunction(xx, oo);

echo empty(return);

[!--infotagslink--]

相关文章