PHP常见问题

发表于:2007-06-11来源:作者:点击数: 标签:
1、PHP代码中函数前面的@是什么意思? 答:@的作用是忽略调用该函数时产生的错误信息。 2、为什么出现“APACHE.EXE: cannot determine local host name.”? 答:由于 Windows 版本的Apache默认情况下不指定ServerName,所以运行时会出错。 解决的办法是修改

1、PHP代码中函数前面的@是什么意思?

答:@的作用是忽略调用该函数时产生的错误信息。

2、为什么出现“APACHE.EXE: cannot determine local host name.”?

答:由于Windows版本的Apache默认情况下不指定ServerName,所以运行时会出错。 解决的办法是修改Apache安装目录下的conf目录下的httpd.conf:

- 搜索ServerName

- 去掉前面的#号

- 把ServerName后面的值换成你自己的设置,如localhost之类的

- 保存,重新启动Apache

3、在Windows NT/9x,为什么会出现“Can't connect to MySQL server on 'localhost' <10061>”?

答:MySQL虽然小巧,但毕竟不同于一般的文件数据库,而是一个应用服务器,所以在使用客户程序如mysql之前,必须启动MySQL服务器。方法是在MySQL的bin目录下运行(哪个文件存在就运行哪个):

mysqld.exe



mysqld-shareware.exe

4、关于PHP与Sybase数据库的连接与使用

答:

很高兴看到大家在使用Sybase,在使用本站php_sybct.dll模块时,不少网友遇到问题,

现将网友们的问题解释如下:

1.注意你的PHP版本,我只使用PHP官方源代码(http://php.net)编译PHP.而且,在PHP4里,我发现

每一个版本都稍有区别(主要与ZEND有关),因此PHP4的模块严格区分PHP版本,PHP4RC1的模块不

可能在PHP4.0.0中使用.有网友使用swwwing.com公司的PHP编译版,我不能保证你一定能使用本

模块.

2.正确配置你的PHP,保证你的机器在系统可遍历的路径里只有一个php.ini,并配置正确,建议的

做法: 将php_sybct.dll拷至php4所在目录,如c:\php4,修改php.ini(一般位于Windows目录或

WinNT目录)中extension_dir=c:\php4 增加 extension=php_sybct.dll 注意=号两边不要有空

格;运行php_info();,查看PHP输出信息,若找到sybase_ct信息,证明模块加载成功.否则,就是

你的PHP版本与本模块不匹配.其实最简单办法是看有没有什么 'X-Powered By...' 信息,若有,

则模块肯定与PHP版本不匹配!

3.正确安装并配置好Sybase Client端,PHP连接Sybase数据库不是凭空的,它需要Sybase Client

DLL的支持.使用SQLEDIT为Web数据库增加一个数据服务(当然,这不是必须的,你可以使用现有

的数据服务)SybWeb,正确填写配置参数后,存盘退出. 使用SybasePing工具,确保SybWeb服务能

ping通Sybase Server.

4.编写PHP代码,连接数据库,使用sybase_pconnect("SybWeb","sa","sapass");//sapass为sa用

户的连接密码.Sybase会提示诸如"changed database to master..."等信息,若想屏蔽这些信

息,可在函数前加'@',sybase_select_db("Your DataBase Name")函数前也应加'@'.

5.其它问题:

*关于非法操作

其一可能与本机有关,如Sybase Client安装不正确,或Win9x系统有问题.你可以移植到WinNT

试试;

其二可能与Sybase Client版本有关,我使用SybaseCT Version 11.0.2编译的本模块,后来有网

友提供了Version 11.9.2,我将在PHP4.0.1(含)以后的版本中使用.就像MSSQL有65与70一

样,Sybase也会有版本区分.此模块我发给过不少国外的网友,他们使用都很正常.我想是因

为老外不像国人那么时髦,什么都用最新的缘故.

*关于LinuxUNIX下Sybase的连接

我没有使用两种系统下的Sybase,因此无法测试,但国内外都有网友使用本模块成功的建立了与

Sybase for Lunix的连接.我想都是基于TCP/IP的,并不奇怪.不过,应注意,此时的SybWeb服务应

基于TCP/IP(NLWNSCK)而不是命名管道(NLMSNMP).

*关于Sybase SQL Any Where

有网友使用本模块连接 Sybase SQL Any Where,这是Sybase的一种小型化的基于桌面的数据库

系统,可能无法使用本模块.



我使用Win98+Apache1.3.12+Sybase system 11(Client)+PHP4.0.0作开发;

数据库为 WinNT4+Sybase system11;

Web Server为Apache1.3.12(运行于WinNT)+PHP4.0.0,暂时与数据库 Server 同机;

使用一直正常.

(由Sunny Wang提供)

5、为什么在WINDOWS下使用PHP4的SESSION功能老是报路径出错?

答:这个可能是PHP4.0在WINDOWS下的一个BUG,希望能在以后的版本里得到彻底解决。目前的解决办法是把保存SESSION的路径设为当前路径(只有这样,才不会包错)。

方法是修改php.ini,把

session.save_path

的值设为

./

6、如何在WIN2K下把MYSQL安装成自动的服务?

答:MYSQL在WINDOWS NT 4下很容易被安装成自动启动的服务,但WINDOWS 2000下却要出错?为什么呢?经过查找终于发现了问题所在:

执行mysqld-shareware --install后,将在WINDOWS的服务里增加一项,但这项的执行文件却是mysqld.exe,而不是mysqld-shareware.exe,所以,我的解决办法是把mysqld-shareware.exe复制为mysqld.exe。再启动WINDOWS 2000,一切OK!

7、运行PHP4出现X-Powered-By和Content-type: text/html问题的解决

答:这两条信息本来是HTTP协议头的一部分,也就是说它们是不应该出现在浏览器里的,但为何却出现了呢?

原因是在PHP输出这两条信息之前已经有过浏览器不认识(不是HTTP协议头)的内容,最大的可能就是PHP本身出错,比如调用某个DLL时。

解决的办法是在DOS提示符下运行:

C:\PHP\PHP.EXE

(注意要换成你自己的PHP目录)

看看是否有什么不正常的信息,然后看情况休整错误即可。

8、如何从Linux下访问Microsoft SQL Server?

答:Bill Gates肯定不会提供Linux下的MS SQL驱动程序,那么如何从Linux下访问MS SQL呢?请看:

确认能够通过TCP/IP PING通MS SQL服务器的那台机器

确认MS SQL上建立了基于TCP/IP的连接方式,默认情况下是命名管道的

对于MS SQL 6.5及更低版本,用Sybase CT库就足够了;对于MS SQL 7及以上版本,要用到TDS。要得到Sybase CT库,有两个办法:到这里下载SYBASE ASE 11.0.3(几十M),或到这里下载SYBASE CT库(几M)。至于TDS,可以到其官方站点去下载。

设置指向MS SQL服务器的interface文件,这里有个例子:

--------------------------------------

nt

master tcp ether 192.168.0.1 1443

query tcp ether 192.168.0.1 1443

--------------------------------------

其中1443是MS SQL服务器的默认端口号

以SYBASE的用户登陆到Linux,测试和MS SQL之间的连接:

isql -U -P -S

如:

isql -Uhunte -Pmypass -Snt

看能够执行一些查询。

参考PHP/TDS的编译指南,把所需的库编译进PHP:

./configure --with-sybase=/path/to/sybase



原文转自:http://www.ltesting.net

...