linux中PHP dirname(__FILE__)路径问题解决
近期在给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__)的方法引用文件,以解决多数情况下的引用问题。
使用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.
If you are the system administrator please click here to find out more about this error.
其实解决这个问题很简单,今天就把它当一节课与大家讲讲。
第一步:启动IIS,打开该站点。在【功能视图】的列表中找到【ASP】
第二步:找到【将错误发送到浏览器】的值修改为【True】并应用。
如果你修改之后,直接预览再看效果。估计是不行的,因为还没有设置好。
出现的错误如下:
Active Server Pages 错误 'ASP 0131'
不允许的父路径
/admin/login.asp,行 1
包含文件“../Inc/Const.Asp”不能用“..”表示父目录。
第三步:这时候我还要设置下【启用父路径】,同样设置为【True】并应用
再看下效果如何吧?
顺便也在这里解释下,而我根据我理解来介绍呢,简单来说呢?将错误发送到浏览器就是把程序错误信息不用友好的方式展现出来,主要是为了方便调试;启用父路径而是代码中出现了“...”等的路径方式,跟Windows权限继承是一样的。下面内容来自微软官方说明:
将错误发送到浏览器 [scriptErrorSentToBrowser]:
指定 Web 服务器除了将调试详细信息(文件名、错误、行号、描述)记录到 IIS 请求日志中以外,是否还将其写入客户端浏览器。默认值为 True。
启用父路径 [enableParentPaths]:
指定 ASP 页是否允许相对于当前目录的路径(使用“...”表示法),即当前目录之上的路径。默认值为 False。
Tisp:
1.如果浏览器打开任何网站出现问题,可以把IE的【显示友好http错误信息】不要打勾启用来查看此网站的错误信息。
2.虚拟主机空间的用户可以让服务商来解决此问题。
有不少喜欢尝新的朋友会碰服务器安装php5.4版本之后dedecms5.7登录后面一篇白茫茫的啊,像下雪一样哦,下面我们来看dedecms后台登录空白问题问题办法。linux,php5.4, 织梦dedecms后台登录空白,原因:
include/userlogin.class.php,里面有一个keepuser()函数,是用session_register来注册一个session变量,但是在php5.4中已经移除了这个功能
代码如下 | 复制代码 |
把@session_register($this->keepUserIDTag); 注释掉,然后改为 如下: |
我的修改前与修改后的代码
解决方法:找开include/userlogin.class.php文件,查找以下内容:
代码如下 | 复制代码 |
@session_register($this->keepUserIDTag); 替换成 global $admincachefile,$adminstyle; |
你使用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);
在php中imagecreate函数是一个图形处理函数,主要用于新建一个基于调色板的图像了,然后在这个基础上我们可以创建一些图形数字字符之类的,但这个函数需要GD库支持,如果没有开启GD库使用时会提示Call to undefined function imagecreate()错误。例,我在测试一个简单生成图形时实例
Example #1 新建一个新的 GD 图像流并输出图像
代码如下 | 复制代码 |
<?php |
运行机制时提示
Fatal error: Call to undefined function imagecreate() .....
后面突然想起没打开gd库了
这一问题是:GD库没有正确安装或配置,解决方案:
在php.ini中找到
;extension=php_gd2.dll
去掉前边的;
然后将php目录中的ext下的php_gd2.dll拷入c:/windows/system32和c:/windows目录下,重启IIS或者apache就OK了.
centos中gd库开启
具体操作只有2个命令如下:
运行在线安装带GD库的PHP的命令:
代码如下 | 复制代码 |
yum -y install php-gd |
重新启动apachce服务以使安装后的GD库生效
代码如下 | 复制代码 |
/etc/rc.d/init.d/httpd restart(service httpd restart) |
gd的安装路径
/etc/php.d/gd.ini <---这个是让php支持gd的哦,这个是CentOS的特色之一,不用把全部东西都写在php.ini这个文件里,只是需要把*.ini文件写在/etc/php.d/文件夹就可以了,系统会自动把这个目录下的*.ini读入php.ini
/usr/lib/php/modules/gd.so <----这个就是gd的文件啦
关于需要使用GD库的图形处理函数还有如下
gd_info
getimagesize
getimagesizefromstring
image_type_to_extension
image_type_to_mime_type
image2wbmp
imageaffine
imageaffinematrixconcat
imageaffinematrixget
imagealphablending
imageantialias
imagearc
imagechar
imagecharup
imagecolorallocate
imagecolorallocatealpha
imagecolorat
imagecolorclosest
imagecolorclosestalpha
imagecolorclosesthwb
imagecolordeallocate
imagecolorexact
imagecolorexactalpha
imagecolormatch
imagecolorresolve
imagecolorresolvealpha
imagecolorset
imagecolorsforindex
imagecolorstotal
imagecolortransparent
imageconvolution
imagecopy
imagecopymerge
imagecopymergegray
imagecopyresampled
imagecopyresized
» imagecreate
imagecreatefromgd2
imagecreatefromgd2part
imagecreatefromgd
imagecreatefromgif
imagecreatefromjpeg
imagecreatefrompng
imagecreatefromstring
imagecreatefromwbmp
imagecreatefromwebp
imagecreatefromxbm
imagecreatefromxpm
imagecreatetruecolor
imagecrop
imagecropauto
imagedashedline
imagedestroy
imageellipse
imagefill
imagefilledarc
imagefilledellipse
imagefilledpolygon
imagefilledrectangle
imagefilltoborder
imagefilter
imageflip
imagefontheight
imagefontwidth
imageftbbox
imagefttext
imagegammacorrect
imagegd2
imagegd
imagegif
imagegrabscreen
imagegrabwindow
imageinterlace
imageistruecolor
imagejpeg
imagelayereffect
imageline
imageloadfont
imagepalettecopy
imagepalettetotruecolor
imagepng
imagepolygon
imagepsbbox
imagepsencodefont
imagepsextendfont
imagepsfreefont
imagepsloadfont
imagepsslantfont
imagepstext
imagerectangle
imagerotate
imagesavealpha
imagescale
imagesetbrush
imagesetinterpolation
imagesetpixel
imagesetstyle
imagesetthickness
imagesettile
imagestring
imagestringup
imagesx
imagesy
imagetruecolortopalette
imagettfbbox
imagettftext
imagetypes
imagewbmp
imagewebp
imagexbm
iptcembed
iptcparse
jpeg2wbmp
png2wbmp
相关文章
PHP传值到不同页面的三种常见方式及php和html之间传值问题
在项目开发中经常见到不同页面之间传值在web工作中,本篇文章给大家列出了三种常见的方式。接触PHP也有几个月了,本文总结一下这段日子中,在编程过程里常用的3种不同页面传值方法,希望可以给大家参考。有什么意见也希望大...2015-11-24- js修改input的type属性有些限制。当input元素还未插入文档流之前,是可以修改它的值的,在ie和ff下都没问题。但如果input已经存在于页面,其type属性在ie下就成了只读属性了,不可以修改。...2013-10-19
如何使用php脚本给html中引用的js和css路径打上版本号
在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css、js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、...2015-11-24- 1,utf8_bin跟utf8_general_ci的区别 ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的; bin 是二进制, a 和 A 会别区别对待. 例如你运行: SELECT * FROM table WHERE txt = 'a'...2013-10-04
linux中PHP dirname(__FILE__)路径问题解决
在php 中dirname() 函数返回路径中的目录部分,__FILE__而当前运行文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。这是一个魔法变量(预定义常量),在...2016-11-25- 这篇文章主要介绍了C#路径,文件,目录及IO常见操作,较为详细的分析并汇总了C#关于路径,文件,目录及IO常见操作,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 一、1 CREATE TABLE NAME(name VARCHAR(10)); 对这个表,缺省情况下,下面两个查询的结果是一样的:复制代码 代码如下: SELECT * FROM TABLE NAME WHERE name='clip'; SELECT * FROM TABLE NAME WH...2015-03-15
- 一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo /etc/init.d/mysql stop 2.修改mysql配置文件 mysql配...2015-10-21
- 本篇文章是对使用C#获取系统特殊文件夹路径的解决方法进行了详细的分析介绍,需要的朋友参考下...2020-06-25
- 这篇文章主要介绍了Java实现将图片上传到webapp路径下 路径获取方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-11-12
- 这篇文章主要介绍了C#使用浏览按钮获得文件路径和文件夹路径的方法,结合实例形式分析了C#浏览器事件响应及文件操作相关技巧,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了改变R语言默认存储包的路径操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- ios获取文件路径的方法,iphone沙箱模型的四个文件夹,通过documents,tmp,app,Library得到模拟器路径的简单方式,下面小编整理相关资料,把IOS获取各种文件目录路径的方式总结如下,需要的朋友可以参考下...2020-06-30
- 这篇文章主要介绍了使用队列(Queue)解决简单的并发问题,讲解的很细致,喜欢的朋友们可以了解一下...2020-06-25
- 下面小编就为大家分享一篇c# 获得当前绝对路径的方法(超简单),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
- 有段时间没用npm了,新建个项目,需要改变npm全局包默认安装的路径,本文就来介绍一下node自定义安装更改npm全局模块默认安装路径的步骤,感兴趣的可以了解下...2021-09-14
- 2015年7月29日0点起,Windows 10推送全面开启,Windows7、Windows8.1用户可以免费升级到Windows 10,用户也可以通过系统升级到Windows10,在这过程中,用户会遇到这样那样的问题,下面小编总结了windows 10 安装和使用中5个常见问题,需要的朋友可以参考下...2016-01-27
- PHP的session功能,一直为许多的初学者为难。就连有些老手,有时都被搞得莫名其妙。本文,将这些问题,做一个简单的汇总,以便大家查阅。 1. 错误提示 引用 代...2016-11-25
- 回调函数被认为是一种高级函数,一种被作为参数传递给另一个函数(在这称作"otherFunction")的高级函数,回调函数会在otherFunction内被调用(或执行)。回调函数的本质是一种模式(一种解决常见问题的模式),因此回调函数也被称为回调模式。...2016-04-25
- 这篇文章主要介绍了C#中文件名或文件路径非法字符判断方法,本文主要使用了内置的GetInvalidFileNameChars方法实现非法字符判断,需要的朋友可以参考下...2020-06-25