Fatal error: Call to undefined function mysql_connect() in D:\PHP\www\index.php on line 7
PHP+MSSQL Call to undefined function mssql_connect() 错误解决:
如果服务器端没有安装MSSQL 即使去掉EXTENTION中的 mssql.dll也会提示此错误。
解决办法:
1.打开php.ini 修改 ;extension=php_mssql.dll 去掉前面的;号(注意该文件是否存在,不存在去搜索下载);
2.“在http.conf中加入:LoadFile (PHP物理路径)\ntwdblib.dll”或者“复制PHP目录下 ntwdblib.dll 文件到SYSTEM32目录下”。
从php_mssql.dll引入表中可以看到该dll依赖于:
php5ts.dll
ntwdblib.dll
msvcrt.dll
kernel32.dll
php5ts.dll所依赖的dll
kernel32.dll
advapi32.dll
msvcr71.dll
user32.dll
netapi32.dll
最后:查看一下kernel32.dll、advapi32.dll、user32.dll、netapi32.dll是否都存在于系统目录下。
注意:1.windows下面一定要安装mssql或者,mssql客户端。如果一定要不安装那就操作第2注意项。
2.ntwdblib.dll有版本要求,最好拷贝mssql里面的文件。只测试过客户端下的并通过。
3.mssql.secure_connection的设置:网络连接mssql.secure_connection = Off,本地连接设为On。
出现下面这就话:
Strict Standards: Only variables should be passed by reference in D:\wamp\ecshop\includes\cls_template.php on line 406
第406行:$tag_sel = array_shift(explode(' ', $tag));
解决办法 1
5.3以上版本的问题,应该也和配置有关 只要406行把这一句拆成两句就没有问题了
$tag_sel = array_shift(explode(' ', $tag));
改成:
$tag_arr = explode(' ', $tag);
$tag_sel = array_shift($tag_arr);
(实验过,绝对可行)
因为array_shift的参数是引用传递的,5.3以上默认只能传递具体的变量,而不能通过函数返回值
换句话说,就是把所有的函数中的参数,用一个变量存着,再加入到函数中。
如:aaa("123"); 改成
$a1="123";
aaa($a1);
解决办法 2 :
或则如果这样配置的话: error_reporting = E_ALL | E_STRICT
这个解决方法二、经过亲身体验,貌似解决不了,可能是我配置错了。试过成功的大牛们说一句。