本文目录一览:
- 1、pHP链接数据库报错Warning: mssql_connect() [function.mssql-connect]: message: 用户 'NT AUTHORITY\IU
- 2、请教PHP里使用命名管道连接本机mysql如何写连接串
- 3、php filetype()函数返回的类型中有 file fifo block link char dir unknow 这些都表示什么类型?
- 4、求解php和c语言的进程间通信能兼容吗
pHP链接数据库报错Warning: mssql_connect() [function.mssql-connect]: message: 用户 'NT AUTHORITY\IU
之前我刚遇到过这类问题。
使用php链接mssql出错,但是代码没有问题,本机测试正常,上传到服务器又不行。
如果是这种情况,请参照下面的步骤。
1、运行 SQL Server 配置管理器:SQL Server Configuration Manager,打开协议 Protocols
,允许命名管道 "named pipes" 和 "tcp/ip" ,右键点击 "tcp/ip",打开属性 Properties 标签 "IP addresses" ,在 TCP 动态端口 "TCP Dynamic Ports" 填入 1433 (其实只要填0就表示开启了动态端口)
2、下载正确版本的 ntwdblib.dll (2000.80.194.0),地址: ,覆盖 php\ntwdblib.dll (mssql2005,mssql2008等等对应的ntwdblib.dll文件版本不同,请参照自己的mssql版本下载对应文件。)
3、php.ini有个mssql的设置 mssql.secure_connection 改成 off。(我就因为这个弄了好久,ON的意思是使用安全连接,实际上是使用nt账户登录,并非使用mssql账户登录。一般我们远程连接都是使用mssql账户登录)
请教PHP里使用命名管道连接本机mysql如何写连接串
要使用管道方式必须满足以下条件:
1.MySql数据库为mysqld-nt, mysqld-max-nt.
2.Windows NT以上平台(Windows NT、2000、XP、2003....)
3.My.ini配置的修改以支持管道(要有下面给出的配置):
[client]
protocol = pipe
socket = mysql
[mysqld]
enable-named-pipe
socket = mysql
重启MySql数据库
用个客户端连接数据库(HostName/IP要填"."(英文的句号),以说明用管道方式连接),以测试是否管道
连接可以成功.
好了.连接成功.现在进入编程.其实和平常的MySql编译的一样的.HostName/IP填"."(英文的句号),就
代表使用管道方式了:
mysql_real_connect(hMySql, ".", m_szUser, m_szPasswd, m_szDBName, m_uPort, NULL,
m_uFlag);
php filetype()函数返回的类型中有 file fifo block link char dir unknow 这些都表示什么类型?
block 块设备文件,如某个磁盘分区、软驱、光驱CD-ROM等
char 字符设备是指在I/O传输过程中以字符为单位进行传输的设备,例如键盘,打印机等
dir 目录类型
fifo 命名管道,常用于将信息从一个进程传输到另一个进程
file 普通文件类型,如文本文件或可执行文件等
link 符号链接,是指向文件指针的指针,类似Windows中的快捷方式
unknown 未知类型
求解php和c语言的进程间通信能兼容吗
PHP是比较流行的脚本语言,WEB开发使用广泛,如何在C++程序中不依赖任何WEB
SERVER调用PHP,并取得执行结果完成交互。
PHP安装好后,在目录下有一个php-cgi.exe,我们只要执行这个CGI程序,并将数据通过命名管道传递给它,然后把执行结果通过命名管道读取出来即可,过程并不复杂!请看如下代码:
命名管道的创建:
SECURITY_ATTRIBUTES
sa
=
{sizeof(SECURITY_ATTRIBUTES)};
sa.bInheritHandle
=
1;
sa.lpSecurityDescriptor
=
NULL;
HANDLE
hStdoutR,
hStdoutW,
hStdinR,
hStdinW;
CreatePipe(hStdoutR,
hStdoutW,
sa,
0);
SetHandleInformation(hStdoutR,HANDLE_FLAG_INHERIT,
0);
CreatePipe(hStdinR,
hStdinW,
sa,
0);
SetHandleInformation(hStdinW,
HANDLE_FLAG_INHERIT,
0);
启动php-cgi进程:
STARTUPINFO
si
=
{sizeof(STARTUPINFO)};
PROCESS_INFORMATION
pi;
si.dwFlags
=
STARTF_USESTDHANDLES;
si.hStdOutput
=
hStdoutW;
si.hStdInput
=
hStdinR;
char
env[255]
=
"REQUEST_METHOD=POST\0CONTENT_LENGTH=18\0CONTENT_TYPE=
application/x-www-form-urlencoded\0SCRIPT_FILENAME=D:\\test.php";
if(!CreateProcess(NULL,
"d:\\php5\\php-cgi.exe
D:\\test.php",
NULL,
NULL,
1,
NORMAL_PRIORITY_CLASS,
env,
NULL,
si,
pi))
return
0;
CloseHandle(hStdoutW);
CloseHandle(hStdinR);
传递数据:if(!WriteFile(hStdinW,
"var=Hello
VCKBASE!",
18,
dwWritten,
NULL))
return
0;
CloseHandle(hStdinW);
读取返回数据:char
buf[1000]
=
{0};
DWORD
dwRead
=
0;
while(ReadFile(hStdoutR,
buf,
sizeof(buf),
dwRead,
NULL)
dwRead
!=
0){
printf(buf);
}
CloseHandle(hStdoutR);
D盘的test.php
?
echo
$_REQUEST["var"];
?
执行结果:
X-Powered-By:
PHP/5.3.1
Content-type:
text/html
Hello
VCKBASE!
实际上,C++调用其他CGI程序,例如PERL,方法也大同小异,如果你打算做一个自己的WEB服务器,调用CGI程序是少不了的。