php提示Notice: Use of undefined constant错误
进入网站会出现大量类似的提示,但是可以正常显示和运行
像下面这样的一行简单的代码就会产生上述错误:
$str = coderbolg;
虽然有时这样是可以运行的,但在有些情况下就会出现问题。在看到这个错误提示时,可以查找引号中的单词,找到它就可以发现问题,这通常是在应该使用字符串的地方忘记了引号,或是在应该使用变量的时候漏掉了$符号。
php默认的时区不对,尝试在页面的最前页加上
代码如下 | 复制代码 |
|
之后发现提示Notice: Use of undefined constant PRC – assumed 'PRC',原来PHP5.1.0以后date_default_timezone_set被重写,PRC无效了.改成
代码如下 | 复制代码 |
date_default_timezone_set("Asia/Shanghai"); |
就正常了。
代码如下 | 复制代码 |
<?php |
这些是 PHP 的提示而非报错,PHP 本身不需要事先声明变量即可直接使用,但是对未声明变量会有提示。一般作为正式的网站会把提示关掉的,甚至连错误信息也被关掉
关闭 PHP 提示的方法
搜索php.ini:
代码如下 | 复制代码 |
error_reporting = E_ALL 改为: error_reporting = E_ALL & ~E_NOTICE |
还有个不是办法的办法就是
在每个文件头上加
代码如下 | 复制代码 |
error_reporting(0); |
虽然不好弄但是可以解决问题,对于关闭php错误提示我们如果能发现错误还是对错误进行解决,因为我前写过一篇php 代码如果有大量错误我们进行了关闭,会影响到程序性能哦。
以前写的一个php脚本,在换成php5.5.8的版本的时候出现了 PHP Notice: undefined index xxx 的警告信息,感觉不舒服解决方法
方法1:服务器配置修改 修改php.ini配置文件,error_reporting = E_ALL & ~E_NOTICE
方法2:页面头部新增 error_reporting(E_ERROR | E_WARNING | E_PARSE); 或者 error_reporting(E_ALL & E_NOTICE); 或者 error_reporting(0);
检测参数方法:(在PHP5.5.8依然无效 Undefined variable: param)
定义一个函数:
function _get($str){
$val = !empty($_GET[$str]) ? $_GET[$str] : null;
return $val;
}
延伸问题:
1.修改在php.ini的参数后重启 php-fpm 网上的那种 php5.4下的 kill 等都无效(在5.5下无php-fpm.pid,kill对应进程也是无效的,我的默认起了3个php-fpm进程)
php-fpm 关闭:
kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
php-fpm 重启:
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
查看php-fpm进程数:
ps aux | grep php-fpm
2.解决方法 netstat -lntp 可以看到php-fpm 监听的9000端口的进程 kill掉此进程即可
3.在重新启动php-fpm即可 /usr/local/webservers/php/sbin/php-fpm -D
fopen一般情况是可以使用的,但是今天在测试一个打开远程文件时出了一些问题,最后还是解决了,而感谢而发写了这篇文章了,也就是总结了一下我找到的解决办法吧,希望对同样和我碰到fopen函数使用问题的朋友带来帮助,让大家也少走弯路了。问题描述
allow_url_fopen = on
Whether to allow the treatment of URLs
(like http:// or ftp://) as files.
allow_url_include = on
Whether to allow include/require to open URLs
(like http:// or ftp://) as files.
在本地wamp测试环境中,这样设置以后,fopen可以正常打开远程地址,但遇到本地的地址却会报错,例如
代码如下 | 复制代码 |
fopen("http://localhost/myfile.php", "r"); |
就会在超过php.ini中设置的脚本最长执行时间后报错,告知文件不存在等。这在在线服务器上是不会出现的,但如果将localhost替换成127.0.0.1,却可以正常工作。
从状况看,问题出在DNS解析上,按理说localhost已经自动被映射到127.0.0.1,实际上访问http://localhost和访问http://127.0.0.1也到达同一个地址。
解决的方法就是检查一下Windows的host文件,通常位于system32目录下,一个系统盘是C盘的host路径如下所示
C:/Windows/System32/drivers/etc/hosts
打开hosts文件,用记事本或者notepad++等工具
将下面的127.0.0.1前面的#去掉即可。
代码如下 | 复制代码 |
# localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost |
将url视为文件有什么用
比如给include的文件传值,可以这样
代码如下 | 复制代码 |
<?php include 'http://yourdomain.com/
运行结果 string(1) "1" string(1) "2" |
补充一下
fopen不能创建中文文件名文件的问题
之前网页的chartset用的是utf-8,文件也用utf-8,然后用fopen()创建一个中文文件名的文件时问题就出来了,文件名都是乱 码!
查看了很多文档试了不少方法都解决不了,本来想着用别的方法绕过这个问题,忽然脑子里闪过Windows默认的文字编码是ansi,然后再 baidu了一下,证实了这点,所以我的网页也应该是ansi编码才能使创建的文件名不会是乱码。
接着就着手验证,把网页都用ansi保存,去掉chartset语句,果然ok了,但是网页的内容就成乱码了,后来想起,这个网页还include 了别的网页,把include的网页也改成ansi保存,哈哈万事ok
编程这个工作真的很靠积累,如果我以前没看过Windows默认编码是ansi,那这个问题就不知何年何月才能解决了
ps:< meta content ="text/html; charset=utf-8" http -equiv ="Content-type" > 这个meta标记一定要放在<title></title>之前才有效的
后来又想到了一个更好的解决方法,网页还是用utf-8编码和保存,只是fopen()里的文件名参 数单独给它编下码就行,php有iconv() 这个改换编码的程序,把utf-8转成 gb2312就可以避免中文文件名为乱码了
test.htm
代码如下 | 复制代码 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
test.php
代码如下 | 复制代码 |
<?php //实际应用中很可能是查询数据库取内容。 |
今天帮别人弄网站的时候要修改数据库字段
然后发现苦逼的事情
phpmyadmin无法登陆
访问 PHPMyAdmin 提示
phpMyAdmin - Error
Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.
好吧 无语了
赶紧查资料
说这个问题是因为session存放目录的权限问题。session目录你要找到PHP目录下的php.ini文件,看你设定的 session 存放目录为哪个路径,找到其所在的文件夹,给予Internet来宾账户session目录的控制权限。
我是按照以下操作解决的:
在php.ini找到session.save_path 这一行, session.save_path = "D:/php/tmp" 那么你就对tmp文件夹进行权限设定。 Internet来宾账户就是IUSR开头的账户,我给了其最高为写入权限,刷新可以看到登陆界面了。激动哈,所以记录下方法,以免遗忘。
另外一个是将php.ini中的session.auto_start的值改为1(启动),默认是0(禁用).
然后重启下
对于cookie path很多的朋友不以为燃了这样会发现就是因为一个小点或一个路径问题测试了一天发现读取不了cookie值了,今天我就来给大家介绍cookie中路径的一些例子与注意细节。先看phpcms中的一个函数
代码如下 | 复制代码 |
phpcms/libs/classes/param.class.php public static function set_cookie($var, $value = '', $time = 0, $path = '') { |
这个函数与cookie没什么区别我们先不介绍它,可能很多朋友懂,下面我们再看
setcookie函数的第四个参数为cookie路径,关于路径的设置,本文做了一些尝试,下面是两个测试页(直接用url表示路径和文件目录了):
http://localhost/test/cookie/father.php
http://localhost/test/cookie/child/child.php
代码如下 | 复制代码 |
<?php //setcookie("TestCookie", $value, time()+3600, "/~rasmus/", ".example.com", 1); print_r($_COOKIE); |
代码如下 | 复制代码 |
<?php //setcookie("TestCookie", $value, time()+3600, "/~rasmus/", ".example.com", 1); print_r($_COOKIE); |
分别按如下顺序访问页面father.php—>child.php—>father.php—>child.php,使用firebug查看,分别有如下结果:
图中可以看出,本次请求服务端做出响应,打印了$_COOKIE数组,但数组为空。设置了三个cookie值,分别是:"father_set_1_/"、"father_set_2_/child"、"father_set_3_test/cookie/child",它们对应的路径为"/"、"/child"、"/test/cookie/child",其中"/"指的是站点根目录。
访问child.php能看到请求中发送了两个cookie分别为"father_set_1_/"、"father_set_3_test/cookie/child",接收到四个cookie分别是"child_set_0"、"child_set_1_/"、"child_set_2_/child"、"child_set_3_/test/cookie/child/"。
第二次访问father.php打印出了二个值,也就是本次请求发送了两个值,也就是意味着father.php能访问两个值它们分别是"father_set_1_/"、"child_set_1_/"对应的路径都是"/"。
好了现在不知道你对cooke路径设置懂了没有其它就是我们要使用那个就设置那个路径了,如果是多域名就直接设置主域名就可以了,如果是目录指定目录就行了,如果是单文件指定单文件路径就可以了哦。
相关文章
Ecshop提示Only variables should be passed by reference in错误
在安装好ecshop软件之后我们打开首页时提示Only variables should be passed by reference in错误了,碰到这个问题是什么原因呢?下面我们就一起来看看解决办法吧。...2016-11-25- 409错误是什么?http 409错误怎么解决呢?不少站长在遇到这个错误代码之后都一筹莫展,本次一聚教程网为大家带来了详细的说明,快来看看吧。 409错误是什么: HTTP 40...2017-01-22
- 414错误是HTTP协议状态码中的一种,很多都还不知道414错误是什么,以及不知道怎么解决414错误,那么就来看看小编带来的介绍吧。 414错误是什么: HTTP 414错误,(Requ...2017-01-22
- http 405错误是什么?http 405错误怎么解决?相信很多站长都在找这两个问题的答案,本次小编为大家带来了详细的教程,快来看看吧。 405错误是什么: HTTP 405错误是H...2017-01-22
- 401是HTTP状态码的一种,属于“请示错误”,表示请求可能出错,已妨碍了服务器对请求的处理。具体的401错误是指:未授权,请求要求进行身份验证。登录后,服务器可能会返回对页面...2017-01-22
- http 402错误是什么?402错误较为少见,一般不轻易出现,下面小编就来告诉大家402错误是什么吧。 HTTP 402错误是HTTP状态码的一种,表示“要求付费”; 所求的...2017-01-22
- 411错误是HTTP协议状态码的一种,很多人都还不知道411错误是什么,本次一聚教程网将为大家进行解答,并且告诉大家411错误怎么解决。 411错误是什么: HTTP 411错误,(Lengt...2017-01-22
- Apache status 503 的原因大致有如下几种情况 : 1、 CPU 负载过高,服务器响应不过来,返回503 2、 系统连接数超限,超过MaxVhostClients的上限,返回503 3、 单IP连接数超限,超过M...2016-01-28
- 403错误是网站访问过程中,常见的错误提示。资源不可用,服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致,比如IIS或者apache设置了访问权限...2017-01-22
php错误提示 open_basedir restriction in effect 解决
今天在帮助一个朋友配置一台服务器时发现网站配置好了缓存目录读写不成功,在打开错误时发现提示 Warning: file_exists() [function.file-exists]: open_basedir restr...2016-11-25- 403错误是HTTP状态码的一种,属于“请示错误”,表示服务器拒绝请求。如果在搜索引擎尝试抓取您网站上的有效网页时显示此状态代码,那么,这可能是您的服务器或主机拒绝搜索...2017-01-22
解决springboot使用logback日志出现LOG_PATH_IS_UNDEFINED文件夹的问题
这篇文章主要介绍了解决springboot使用logback日志出现LOG_PATH_IS_UNDEFINED文件夹的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-28- 412错误是什么?412错误怎么解决?本次一聚教程网将为大家带来详细的介绍,帮助大家全面了解412错误的意思以及解决412错误的方法。 412错误是什么: HTTP 412错误,(Precond...2017-01-22
- 相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
- 407错误是什么?407错误怎么解决?不少站长都遇到过407错误,下面小编将告诉大家如何处理407错误。 407错误是什么: HTTP 407错误是HTTP协议状态码的一种,表示需要代...2017-01-22
- HTTP 406错误是HTTP协议状态码的一种,表示无法使用请求的内容特性来响应请求的网页。一般是指客户端浏览器不接受所请求页面的 MIME 类型。 而MIME类型是在把输出...2017-01-22
- 410错误是HTTP协议状态码的一种,本次一聚教程网将为大家详细介绍HTTP 410错误是什么,以及410错误的解决办法。 410错误是什么: HTTP 410错误是HTTP协议状态码的...2017-01-22
- 每当遇到http错误代码为400,代表客户端发起的请求不符合服务器对请求的某些限制,或者请求本身存在一定的错误,那么HTTP 400错误怎么解决呢?请看下文介绍。 目前400错...2017-01-22
PHP Fatal error: Cannot use object of type stdClass as array in错误
下面一起来看看在php开发中碰到PHP Fatal error: Cannot use object of type stdClass as array in错误问题的解决办法吧。 普通的数组出现如下错误 代码...2016-11-25- 自己用的小PHP应用,使用curl抓网页下来处理,为了穿墙方便,使用Privoxy作为代理,便于选择哪些网站使用proxy、哪些不用。但今天却遇到了奇怪的问题,访问google baidu这些网站居然都返回403错误,而访问其他的一些网站没事,如果...2014-05-31