网站问题解决方案

打开 PHP 服务的报错功能

编辑 php.ini 设置字段:

display_errors = On
error_reporting = E_ALL & ~E_NOTICE

error_reporting 变量的默认值是 E_ALL。这个设置会显示从不良编码实践到无害提示到出错的所有信息。E_ALL 对于开发过程来说有点太细,因为它在屏幕上为一些小事(例如变量未初始化)也显示提示,会搞糟浏览器的输出。

php 执行权限问题

  • 在 Ubuntu 的 php文件执行 move_uploaded_file() 移动文件失败。
  • move_uploaded_file() 移动文件失败,更改文件夹权限时,只更改了文件夹本身的权限,而没有递归更改文件夹下所有文件的权限,没有使用 chmod-R 模式。
  • 在 Ubuntu 使用 Smarty 模板引擎时,运行时主页空白,要给根目录内生成编译文件的 php文件足够的执行权限,否则无法生成编译内容。
  • 更换网站根目录下的文件后,即使曾经已给了根目录权限,更换文件后也需要重新给所有的新文件权限,因此要重新给根目录递归的权限。

require_once 报错

require_once './xxx.php'; 改为 requrie_once 'xxx.php';

404 NOT FOUNT

  • 网站目录下的文件名与网页中的链接书写的大小写必须一致,否则找不到页面。
  • 注意,修改配置文件修改后要重启相应服务,php 和 nginx 对应不同的服务。

目录分隔符

Ubuntu内以正斜杠(/)为目录分隔符,不可以使用反斜杠(\)代替。

ThinkPHP报模板不存在:./Application/Home/View/Index/index.html

在客户端测试网站的时候不区分大小写,因此不会检查出大小写上的错误,当拿到真正的服务器上运行时就会因此报错。将方法名index改成大写才行。

error 1292 (22007): Incorrect datetime value: ‘0000-00-00 00:00:00’ for column ‘xx’ at row 1

执行 show variables like ‘%sql_mode%’;

值中包含NO_ZERO_IN_DATE,NO_ZERO_DATE,TRADITIONAL,去掉这三个重新赋值:

set global sql_mode=’STRICT_TRANS_TABLES,STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER’;

最后重新登录mysql,会看到该值发生变化。

include某页面后不能使用里面定义的变量

在函数里不能使用外部引入的变量,用 global 将变量转化为全局变量即可。例如:

include 'config.php';
global $dbhost, $dbuser, $dbpwd, $dbname, $dbcharset;

图形验证码不显示

安装GD库。

sudo apt-get install php5-gd

安装时,不要省略 sudo 一词,否则报错,导致安装不完整。

猜你喜欢

转载自blog.csdn.net/petezh/article/details/81667526