本文目錄一覽:
- 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程序是少不了的。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/251841.html