CGI 和 CLI 可执行文件以及 web 服务器模块都需要 php4ts.dll(php5ts.dll)。必须确认该文件可以在 PHP 安装路径中找到。对该 DLL 的搜索顺序为:
调用 php.exe 时所在的目录,或者若使用 SAPI 模块时,web 服务器的目录(例如 C:\Program Files\Apache Group\Apache2\bin)。
任何在 Windows 的 PATH 环境变量中指定的目录。
要让 php4ts.dll / php5ts.dll 能正确被搜索到,有下面三个选择:
1. 复制该文件到 Windows 系统目录
2. 复制该文件到 web 服务器的目录
3. 把 PHP 目录(例如 C:\php)添加到 PATH 环境变量中。
为了将来更好的维护,建议使用最后一个选择,将 PHP 目录添加到 PATH 环境变量中,因为这样更便于将来升级 PHP。PATH 环境变量中(别忘了重新启动电脑,光注销还不够)。
在thinkphp的后台检测中,由于每个操作的地方都需要先判断一下登录是否超时,就想到用构造函数,但是每个类都写一个构造函数又不方便。
所以写了一个公共类,这个公共类里面还可以写许多其他的通用方法,如: _initialize 方法
新建一个公共Action叫CommAction.class.php
class CommAction extends Action {
public function __construct() {
parent::__construct();
$this->checkAdminSession();
}
public function checkAdminSession() {
//设置超时为10分
$nowtime = time();
$s_time = $_SESSION['logintime'];
if (($nowtime - $s_time) > 600) {
unset($_SESSION['logintime']);
$this->error('当前用户未登录或登录超时,请重新登录', U('login/loginpage'));
} else {
$_SESSION['logintime'] = $nowtime;
}
}
}
?>
如果是面向过程的程序则写一个session.inc.php,把程序判断写在这个文件中,然后其他文件都包含即可。
用内置的MySQL函数和mysqli类操作数据库没什么问题,且在配置文件中把extension=php_pdo.dll和extension=php_pdo_sqlite.dll前面的分号去掉了(AppServ,配置文件中只有以上两条语句有PDO)。
为什么还是出现“ERROR:could not find driver”。
这种情况是提示没有找到pdo的驱动,检查:
1)extension=php_pdo.dll这个文件是否存在
2)打开windows下的php.ini,查找 extension_dir = "地址",查看这个地址是否有文件夹
3)看该文件夹中是否包含上述文件
4)新建一个php页面,输入预览,查看是否已经开启了先关扩展
在添加几个试试:
extension=php_pdo_pgsql.dll
extension=php_pdo_mssql.dll
extension=php_pdo_odbc.dll
extension=php_pdo_firebird.dll
可能是由于没有加 php_pdo_mysql.dll扩展的原因。