當前位置:首頁 » 編程語言 » php安裝soap

php安裝soap

發布時間: 2022-12-06 21:11:07

① 【php】【SOAP】請求伺服器端報錯:方法未找到

你好,有一個較簡單的方法可以檢查下service端是否存在該方法, 或者說你所用的方法名稱是否正確, 方法如下:
$functions = $client->__getFunctions ();
var_mp ($functions);
希望對你有所幫助!

python 有沒有php裡面的soapclient這樣的東西

SOAP.py 客戶機和伺服器
SOAP.py 包含的是一些基本的東西。沒有 Web 服務描述語言(Web Services Description Language,WSDL)或者任何其它附加的東西,只有用 Python 實現的 SOAP 客戶機和伺服器的透明支持。甚至這個包中的一個很好的功能也只是與基礎架構相關:SOAP.py 支持安全套接字層(SSL)用於加密的 SOAP 傳輸。為使用這個功能,您必須安裝 M2Crypto,M2Crypto 是一個庫,包含各種加密工具和格式,從 RSA 和 DSA 到 HTTPs、S/MIME 等等。在這一部分,我們不準備討論 SOAP.py 的 SSL 支持。
SOAP 操作摘要
目前為止,SOAP 實用程序好象仍是比較流行的使用 Python 的開放源代碼活動。下面是該項目的綱要以及它們目前的狀態。首先,參與者:
4Suite SOAP,由 Fourthought 管理
SOAPy,由 Adam Elman 管理
SOAP.py,Python 項目的一個 Web 服務項目
soaplib,由 Secret Labs 管理
Orchard,由 Ken MacLeod 管理
PySOAP,由 Dave Warner 管理
4Suite SOAP 是我們自己的實現,我們在本專欄的前面三部分中使用過(請參閱 參考資料以獲得它的鏈接)。它目前仍在開發中。
SOAPy 是在 2001 年 4 月公布的,目前處於 alpha 的預備階段,但現在好象停止開發了。
SOAP.py 開發被凍結了。SOAP.py 這個項目是由 actzero 公司贊助的,而 actzero 卻不再從事這一行業了。正在邀請自願開發/維護 SOAP.py 的組織。
soaplib 的開發好象也延緩了,考慮到 Secret Labs 這段時間所承擔的大量工作,或許就可以理解為什麼會這樣了。這個瑞典的公司是由 Fredrik Lundh 掌管的,他在 Python 圈內是出名的「工作狂」,同時也是 Python Association 董事會的一名成員。Secret Labs 還開發 PythonWare(Python 的一個核心和重要的附加模塊);PythonWorks(一個領先的 Python IDE);Python Imaging Library 和許多其它好東西(日常 Python-URL Web 日誌就是其中的一部分)。
Orchard 是一個數據管理框架,基本上是一種用一個公共介面管理不同數據格式的方法。它實現了一個 SOAP 客戶機作為在遠程過程調用中向 SOAP 伺服器發送 Orchard 數據項的基本方法(被稱為節點)。
PySOAP 這個項目主要是想作為 Dave Warner 的 Church 管理套件的一部分,但它還從沒發行過任何文件,好象是一個毫無生氣的項目。
安裝
開始先下載分發包(在寫這篇文章的時候,SOAPpy 0.9.7 是最新的分發包),把文件解包,轉到結果目錄,並把文件 SOAP.py復制到自己傾向的位置。當然,這個「傾向」就是需要技巧的地方。由於這些 SOAP lib 中有很多都使用大小寫組合不同的「soap.py」作為模塊名,所以大家一定要小心。當然,UNIX 用戶只需關心大小寫是否精確匹配,但對於 Windows 用戶來說,甚至「SOAP.py」和「soap.py」之間的沖突也會帶來麻煩。Orchard 的 SOAP.py 也有一個容易發生沖突的名稱,但它有可能避開所有的問題,因為它的模塊聰明地放在了 Orchard 包中。
上面的內容簡言之就是建議您確保安裝所有的 Python SOAP 模塊時都使用與眾不同的包名稱。在我們的案例中,我們在 PYTHONPATH 中發現了一個合適的目錄並創建了一個 WebServices 包,把 SOAP.py 放在了這個包中。因此,在 linux 中:
$ mkdir ~/lib/python/WebServices
$ touch ~/lib/python/WebServices/__init__.py
$ cp SOAPpy097/SOAP.py ~/lib/python/WebServices

請注意很重要的第二條命令,它將生成一個 __init__.py 文件,這個文件將 WebServices 目錄標志為 Python 包。如果您需要把這些代碼打包成 Windows 版本,您可能希望向空文件中輸入一些注釋,因為一些 Windows 工具不創建空文件。
您已深入主題了
對於公開提供的 SOAP 伺服器,早已經有了好幾個活動的注冊中心。最流行的可能是 XMethods。當然,它也是一個相當有趣的指導,通過它我們可以了解 SOAP 的實際狀況,而不要聽它的吹噓。這里的大多數公共 Web 服務仍然只是一些無關緊要的東西,幾乎不值得我們勇敢的新模型多費口舌,但那是另一回事了。實際上,我們將選擇一個公共服務來演示和測試如何把 SOAP.py 作為 SOAP 客戶機使用。
或者,我們可以試試。作者嘗試的第一個服務,衛生保健提供者定位器,在遇到下列報錯消息時顯示 SOAP 互操作性的當前狀態中的陷阱:
WebServices.SOAP.faultType: <Fault soap:Client:
Server did not recognize the value of
HTTP Header SOAPAction: "".>

哦。SOAPAction 是一個 HTTP 頭,應該是用來標記被訪問服務的。它是 SOAP 請求中必需的頭,但即便是設置了所需的頭(只是一對空的雙引號)後,上面的錯誤仍然存在。作者發現大多數 MS SOAP 實現都存在這個問題。在試遍了這些服務後,我們斷定,Delphi 實現好象與 SOAP.py 合作得最好,但在試服務時 — 即使是用 Delphi 實現時,也返回復雜的類型,比如列表,SOAP.py 無法使用它們,返回不帶數據的 WebServices.SOAP.typedArrayType 實例。
最後,作者選擇了一個相當合適的 Web 服務,該服務返回漫畫《丁丁歷險記》中的人物 Haddock 船長常用的罵人語言(是的,大多數 Web 服務都是這樣)。 清單 1(curse.py)就是這個程序。
清單 1:訪問 Curse 生成器 SOAP 服務的 SOAP.py 程序
#!/usr/bin/env python

import sys
#Import the SOAP.py machinery
from WebServices import SOAP
remote = SOAP.SOAPProxy(
"ck.exe/soap/IHaddock",
namespace="urn:HaddockIntf-IHaddock",
soapaction="urn:HaddockIntf-IHaddock#Curse"
)
try:
lang = sys.argv[1]
except IndexError:
lang = "us"
result = remote.Curse(LangCode=lang)
print "What captain Haddock had to say: "%s""%result

把一切綜合在一起
導入庫後,我們將設置代理對象 remote 。這個對象將方法調用轉換為遠程 SOAP 消息。它的初始化器使用管理遠程請求的關鍵參數: 伺服器的 URI(被稱為「端點」)、請求元素的 XML 名稱空間(通過它,SOAP-as-RPC 將 口頭承諾變成 XML 基礎)和 SOAPAction 頭值。
接下來,我們將確定方法參數,對於這個 Web 服務來說,方法參數只是 Haddock 罵人的語言,瑞典語(「se」)或英語(奇怪的是,是「us」而不是「en」)。
最後,我們調用名稱正確的方法,代理對象的 Curse 進行 SOAP 調用,然後列印出結果。下面的會話演示了對該程序的使用:
$ python curse.py
What captain Haddock had to say: "Ectoplasmic Byproct!"

我們自己的 SOAP 伺服器
用 SOAP.py 實現 SOAP 伺服器相當容易。作為一個示例,我們將仿建欄位,還要實現一個很常見的服務:一個程序,給出年份和月份,它將以字元串的形式列印出日歷。它的程序伺服器是 清單 2(calendar-ws.py)。
清單 2:實現日歷伺服器的 SOAP.py 程序
#!/usr/bin/env python
import sys, calendar
#Import the SOAP.py machinery
from WebServices import SOAP
CAL_NS = "/simple-cal"
class Calendar:
def getMonth(self, year, month):
return calendar.month(year, month)
def getYear(self, year):
return calendar.calendar(year)
server = SOAP.SOAPServer(("localhost", 8888))
cal = Calendar()
server.registerObject(cal, CAL_NS)
print "Starting server..."
server.serve_forever()

進行過必要的導入後,我們為自己的伺服器定義 SOAP 請求元素期望的名稱空間( CAL_NS )。接下來我們定義實現所有方法的類,這些方法將被公開為 SOAP 方法。大家也可以把單個函數作為 SOAP 方法注冊,但使用類方法是最靈活的,特別是當您想管理調用間的狀態時。這個 Calendar 類定義了一個方法 getMonth ,該方法使用 Python 的內置日歷模塊在文本表單中返回月度日歷,同時它還定義了另一個返回整年日歷的方法。
然後創建 SOAP 伺服器框架的一個實例,這個實例還帶有偵聽埠 8888 的指令。我們還必須創建 Calendar 類的一個實例,這個實例在下一行中被注冊用來處理 SOAP 消息,同時為其指出相關的名稱空間。最後,我們調用 serve_forever 方法,該方法直到進程終止才返回。
為運行伺服器,請打開另一個命令 shell 並執行 python calendar-ws.py 。執行結束時使用 ctrl-C 殺死進程。
我們本來可以用也是用 SOAP.py 寫的客戶機測試伺服器,但那太顯而易見了。我們還是用低級 Python 編寫客戶機把 SOAP 響應作為 XML 字元串來構建,並發送一條 HTTP 消息。這個程序(testcal.py)在 清單 3中。
清單 3:用 Python 核心庫寫的訪問日歷服務的客戶機
import sys, httplib
SERVER_ADDR = "127.0.0.1"
SERVER_PORT = 8888
CAL_NS = "ple-cal"
BODY_TEMPLATE = """<SOAP-ENV:Envelope
xmlns:SOAP-ENV="oap/envelope/"
xmlns:s="/ws/simple-cal"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>
<SOAP-ENV:Body>
<s:getMonth>
<year xsi:type="xsd:integer">%s</year>
<month xsi:type="xsd:integer">%s</month>
</s:getMonth>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>"""
def GetMonth():
year = 2001
month = 12
body = BODY_TEMPLATE%(year, month)
blen = len(body)
requestor = httplib.HTTP(SERVER_ADDR, SERVER_PORT)
requestor.putrequest("POST", "cal-server")
requestor.putheader("Host", SERVER_ADDR)
requestor.putheader("Content-Type", "text/plain; charset="utf-8"")
requestor.putheader("Content reply_body = requestor.getfi-Length", str(blen))
requestor.putheader("SOAPAction", "het/eg/ws/simple-car")
requestor.endheaders()
requestor.send(body)
(status_code, message, reply_headers) = requestor.getreply()
le().read()
print "status code:", status_code
print "status message:", message
print "HTTP reply body:\n", reply_body
if __name__ == "__main__":
GetMonth()

下面的會話演示了這個測試的運行情況。
$ python testcal.py
status code: 200
status message: OK
HTTP reply body:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:SOAP-
ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:SO
AP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<getMonthResponse SOAP-ENC:root="1">
<Result xsi:type="xsd:string"> December 2001
Mo Tu We Th Fr Sa Su
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
</Result>
</getMonthResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

仔細審查的位元組
如果您查找行 self.debug = 0 並把「0」改為「1」(這是 SOAP.py 版本 0.9.7 中的第 210 行),有一件要注意的事情是您可以獲得被交換的實際 SOAP 消息的詳細信息和用於調試與跟蹤的其它關鍵數據,這對您很有用。作為示例,下面提供了一個會話,它是打開了調試信息顯示開關的以前的 curses.py 程序的一個會話:
$ python curse.py
*** Outgoing HTTP headers **********************************************
POST /scripts/Haddock.exe/soap/IHaddock HTTP/1.0
Host: www.tankebolaget.se
User-agent: SOAP.py 0.9.7 (actzero.com)
Content-type: text/xml; charset="UTF-8"
Content-length: 523
SOAPAction: "urn:HaddockIntf-IHaddock#Curse"
************************************************************************
*** Outgoing SOAP ******************************************************
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:SOAP-
ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:SO
AP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:Curse xmlns:ns1="urn:HaddockIntf-IHaddock" SOAP-ENC:root="1">
<LangCode xsi:type="xsd:string">us</LangCode>
</ns1:Curse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
************************************************************************
*** Incoming HTTP headers **********************************************
HTTP/1.? 200 OK
Server: Microsoft-IIS/5.0
Date: Tue, 11 Sep 2001 16:40:19 GMT
Content-Type: text/xml
Content-Length: 528
Content:
************************************************************************
*** Incoming SOAP ******************************************************
<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-
ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/1999/XMLSchema"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xml
soap.org/soap/encoding/"><SOAP-ENV:Body><NS1:CurseResponse xmlns:NS1="urn:HaddockIntf-
IHaddock" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><NS1:return
xsi:type="xsd:string">Anacoluthons!</NS1:return></NS1:CurseRespon
se></SOAP-ENV:Body></SOAP-ENV:Envelope>
************************************************************************
What captain Haddock had to say: "Anacoluthons!"

為進行比較,您可以在帶有下列代碼的舊的 Python 腳本或程序中獲得相同的信息:
import calendar
return calendar.month(2001, 10)

SOAP.py 總結
我們已經注意到了,雖然 SOAP.py 的互操作性還存在一些問題,但可用的調試工具可望提供幫助。

③ php怎麼用啊我是初學者(環境搭建好了)

後,默認用戶名為root,默認密碼為mysql
下載時下載編譯好的那種
解壓MySQL,把所有文件復制到/usr/local/mysql
[root@Bleach usr]# groupadd mysql
[root@Bleach usr]# useradd -g mysql mysql
[root@Bleach mysql]# cd mysql
[root@Bleach mysql]# scripts/mysql_install_db --user=mysql
[root@Bleach mysql]# chown -R root .
[root@Bleach mysql]# chown -R mysql data
[root@Bleach mysql]# chgrp -R mysql .
[root@Bleach mysql]# ./bin/mysqld_safe --user=mysql &
[root@Bleach mysql]# ./bin/mysqladmin -u root password mysql
[root@Bleach mysql]# cp ./support-files/mysql.server /etc/init.d/mysql
[root@Bleach mysql]# cd /etc/rc3.d/
[root@Bleach rc3.d]# ln -s /etc/init.d/mysql S85mysql
[root@Bleach rc3.d]# ln -s /etc/init.d/mysql K85mysql
安裝GD庫基本包gd-devel
#rpm -ivh gd-devel-1.8.4-11.i386.rpm
安裝XPM支持
#rpm -ivh xpm-3.4k-2.i386.rpm
安裝libxml2 (記得PHP5.1.1隻支持libxml2-2.6.11以上版本)
#tar zxvf libxml2-2.6.11.tar.gz
#cd libxml2-2.6.11
#./configure
#make
#make install
開始裝GD庫支持
-------------------------------------------------------
先安裝GD基礎rpm包
#rpm –ivh gd-devel.rpm
ZLIB
#./configure
#make
#make install
JPEGSRC
#./configure --enable-shared
#make
#make install-lib
#make install
LIBPNG
#cp scripts/makefile.std Makefile
#make
#make install
最後是GD2.*
#./configure --with-png=/usr/local --with-jpeg=/usr/local --with-freetype=/usr
#make
#make install
----------------------------------------------
上面一切都很順利的話,GD就算成功的安裝上了. 如果有問題,應該是缺少支持包,總之是少什麼就下載什
么來安裝上.
跟著下來,開始安裝APAHCHE2和PHP5
#./configure --prefix=/usr/local/apache2 --enable-mole=so
#make
#make install
PHP5
#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-gd=/usr/local --enable-trace-vars --with-zlib-dir=/usr/local -with-mysql=/usr/local/mysql --enable-mbstring=all
#make
#make install
復制PHP.INI文件到正確位置
在PHP目錄下運行
#cp php.ini-dist /usr/local/php/lib/php.ini
編輯apache配置文件httpd.conf
#vi /usr/local/apache2/conf/httpd.conf
要改的有如下幾處:
一般都在
#AddType application/x-tar .tgz
下加一行
AddType application/x-httpd-php .php
查找
index.html
在後面加 index.htm index.php 讓它把index.php做為默認頁
再找
#ServerName
把#去掉,後面的IP改成你的IP.
找到
"/usr/local/apache2/htdocs"
把兩個"/usr/local/apache2/htdocs"改為你存放網頁文件的路徑
保存httpd.conf文件.
啟動它
# /usr/local/apache2/bin/apachectl start
如果沒有出錯,寫一個測試頁放到你網頁目錄下, 我的就是上面所說的 /www
phpinfo();
?>
保存.試試在測試器里打IP進去就可以看到PHPINFO頁了
把Apache2加入系統服務
#cd /etc/init.d
#cp /usr/local/apache/bin/apachectl ./httpd
用文本編輯/etc/init.d/httpd
在頭部加入
#chkconfig: 345 79 15
#description: Activates/Deactivates Apache Web Server
# processname: httpd
#chkconfig --add httpd
安裝ZendOptimizer-2.5.3加速PHP
#./install.sh
------------------------
一直想寫篇關於Linux下 PHP環境的詳細安裝配置文章, 沒什麼時間
趁現要配幾台伺服器, 藉此機會把自己安裝配置的步驟寫出來, 供初學者參考!
有什麼錯誤的地方請大家指證批評,謝謝! - by Mayer
首先我在 /root 目錄下建了一個 soft 文件夾來保存我要安裝的源碼
mkdir /root/soft
cd /root/soft
先找到 apache php mysql proftpd 源碼包下載的URL地址
請瀏覽

等官方網站
使用wget 直接下載
wget

...
wget

...
wget

...
第一步:安裝apache
註:當前目錄為/root/soft ,
目錄下有
httpd-2.0.55.tar.gz, php-5.0.5.tar.gz
等二進制源碼包
#號代表為root 根許可權,#後是輸入的一條命令
執行下列命令
解壓源碼包
# tar -zxf httpd-2.0.55.tar.gz
進入安裝目錄
# cd httpd-2.0.55
配置apache安裝信息
# ./configure --prefix=/usr/local/apache --enable-moles=so --enable-rewrite
執行make安裝
# make; make install
安裝完後
# vi /usr/local/apache/conf/httpd.conf
找到 prefork.c 下的
MaxClients 150
改為
ServerLimit 2000
MaxClients 1000
apache默認工作在prefork.c模式下,並發進程為150,超過後就無法訪問,150是遠遠不夠的,所以這里按自己網站的需求改, 如1000
由於apache默認最大並發進程是 256 所以要先設置 ServerLimit 2000 將伺服器可設的最大並發數設為2000, 然後再設置最大並發數 MaxClients 1000
找到 #ServerName

在其下設置 ServerName 如下
ServerName

基中

為你網站名,也可用IP代替
找到 DocumentRoot "/usr/local/apache/htdocs"
設置你的 WEB 伺服器的根目錄 如
DocumentRoot "/myweb"
找到 DirectoryIndex index.html index.html.var 改為
DirectoryIndex index.html index.php index.htm
找到 ForceLanguagePriority Prefer Fallback 在其下加上
AddDefaultCharset gb2312
改完後保存(vi 的用法請查 Linux vi 命令)
用下面命令啟動WEB伺服器
# /usr/local/apache/bin/apachectl start
查看自己的站點是否正常

也可用IP
用 # /usr/local/apache/bin/apachectl stop 可停止服務
安裝MYSQL
# tar -zxf mysql-standard-5.0.15-linux-i686.tar.gz
# cp -r mysql-standard-5.0.15-linux-i686 /usr/local/mysql
# vi /usr/local/mysql/support-files/my-medium.cnf
在後面加上
max_connections = 1000
log-slow-queries
long_query_time = 5
注 max_connections 為允許的最大連接數
log-slow-queries 打開低速查詢日誌
long_query_time 低速查詢的秒數(運行一句sql達到此時間記錄在日誌里)
然後COPY 它為 /etc/my.cnf 文件
# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
添加mysql用戶及用戶組
# groupadd mysql
# useradd -g mysql mysql
修改mysql目錄許可權
# chown -R root /usr/local/mysql
# chgrp -R mysql /usr/local/mysql
# chown -R mysql /usr/local/mysql/data
生成mysql系統資料庫
# /usr/local/mysql/scripts/mysql_install_db --user=mysql&
啟動mysql服務
# /usr/local/mysql/bin/mysqld_safe --user=mysql&
如出現 Starting mysqld daemon with databases from /usr/local/mysql/data
代表正常啟動mysql服務了, 按Ctrl + C 跳出
修改 mysql 的 root 密碼
# /usr/local/mysql/bin/mysqladmin -u root -p password 123456
回車出現 Enter password: 最開始密碼默認為空 繼續回車即可
123456 即為你的新密碼
安裝GD庫(讓PHP支持GIF,PNG,JPEG)
首先下載 jpeg6,libpng,freetype 並安裝模塊
wget

...
wget

...
wget

...
wget

...
安裝 jpeg6
建立目錄
# mkdir /usr/local/jpeg6
# mkdir /usr/local/jpeg6/bin
# mkdir /usr/local/jpeg6/lib
# mkdir /usr/local/jpeg6/include
# mkdir /usr/local/jpeg6/man
# mkdir /usr/local/jpeg6/man/man1
# cd /root/soft
# tar -zxf jpegsrc.v6b.tar.gz
# cd jpeg-6b
# ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
# make; make install
安裝libpng
# cd /root/soft
# tar -zxf libpng-1.2.8.tar.gz
# cd libpng-1.2.8
# cp scripts/makefile.std makefile
# make; make install
安裝 freetype
# cd /root/soft
# tar -zxf freetype-2.1.10.tar.gz
# cd freetype-2.1.10
# ./configure --prefix=/usr/local/freetype
# make;make install
安裝最新的GD庫
# cd /root/soft
# tar -zxf gd-2.0.33.tar.gz
# cd gd-2.0.33
# ./configure --prefix=/usr/local/gd2 --with-jpeg=/usr/local/jpeg6/ --with-png --with-zlib --with-freetype=/usr/local/freetype/
# make; make install
安裝最新的Curl庫
# cd /root/soft
# wget

...
# tar -zxf curl-7.15.0.tar.gz
# ./configure --prefix=/usr/local/curl
# make; make install
安裝PHP
由於php5需libxml2的支持, 所以先下載並安裝libxml2
# cd /root/soft
# wget

...
# tar -zxf libxml2-2.6.19.tar.gz
# cd libxml2-2.6.19
# ./configure --prefix=/usr/local/libxml2
# make; make install
安裝 libxslt
# cd /root/soft
# wget
...
# tar -zxf libxslt-1.1.15.tar.gz
# cd libxslt-1.1.15
# ./configure --prefix=/usr/local/libxslt --with-libxml-prefix=/usr/local/libxml2
# make; make install
# tar -zxf php-5.0.5.tar.gz
# cd php-5.05
# ./configure --prefix=/usr/local/php
--with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql/
--with-curl=/usr/local/curl --enable-ftp
--with-libxml-dir=/usr/local/libxml2 --with-expat-dir=/usr/lib
--enable-soap --with-xsl=/usr/local/libxslt --enable-xslt
--with-gd=/usr/local/gd2/ --with-jpeg-dir=/usr/local/jpeg6/
--with-zlib-dir=/usr/lib --with-png
--with-freetype-dir=/usr/local/freetype
# make
# make install
其中./configure 後的
--prefix=/usr/local/php
--with-apxs2=/usr/local/apache/bin/apxs
--with-mysql=/usr/local/mysql/
--with-libxml-dir=/usr/local/libxml2
是必要的選項
--with-gd=/usr/local/gd2/
--with-jpeg-dir=/usr/local/jpeg6/
--with-png
--with-zlib-dir=/usr/lib
--with-freetype-dir=/usr/local/freetype
這是讓PHP支持GD庫的配置選項
--with-curl=/usr/local/curl 支持CURL庫
--enable-ftp 打開FTP庫函數支持
--enable-soap --with-xsl=/usr/local/libxslt --enable-xslt
讓PHP支持SOAP, 上面這些一般用得少, 可以去掉
配置 httpd.conf 讓apache支持PHP
# vi /usr/local/apache/conf/httpd.conf
找到 AddType application/x-gzip .gz .tgz 在其下添加如下內容
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
重啟apache
# /usr/local/apache/bin/apachectl restart
在你Web目錄里建一內容為 PHP文件, 輸入URL地址查看PHP配置是否正確
安裝 phpmyadmin
下載
# cd /root/soft
# wget

...
# tar -zxf phpMyAdmin-2.6.4-pl3.tar.gz
# vi phpMyAdmin-2.6.4-pl3/config.inc.php
找到 $cfg['Servers'][$i]['auth_type'] = 'config'; 將config 改為 http
保存後
mv phpMyAdmin-2.6.4-pl3 /你的phpmyadmin目錄
關於mysql4.1-4移植4.0舊資料庫中文亂碼問題的解決方法
進入phpmyadmin管理
建立你資料庫名並選上 gb2312_bin 的編碼
然後導入你先前備份好的SQL文件, 導入時選擇 文件的字元集:gb2312
完成後就OK了
注: PHP連接mysql4.1和5.0 資料庫後需指定字元集 需執行如 mysql_query("SET NAMES 'gb2312' ");
否則會產生中文亂碼問題!

④ soap是什麼牌子,

SOAP
求助編輯網路名片
SOAP:簡單對象訪問協議,簡單對象訪問協議(SOAP)是一種輕量的、簡單的、基於 XML 的協議,它被設計成在 WEB 上交換結構化的和固化的信息。 SOAP 可以和現存的許多網際網路協議和格式結合使用,包括超文本傳輸協議( HTTP),簡單郵件傳輸協議(SMTP),多用途網際郵件擴充協議(MIME)。它還支持從消息系統到遠程過程調用(RPC)等大量的應用程序。

目錄

簡介四個部分
協議結構
語法規則
SOAP 核心技術
SOAP 的優點
PHP SOAP實例
消息格式
剖析SOAP封套
SOAP-RPC
SOAP用例
小結簡介 四個部分
協議結構
語法規則
SOAP 核心技術
SOAP 的優點
PHP SOAP實例
消息格式
剖析SOAP封套
SOAP-RPC
SOAP用例小結展開 編輯本段簡介
簡單對象訪問協議含義 這里之所以說是簡單,是因為它是基於已經廣泛使用的兩個協議:HTTP和XML,所以業界把這種技術稱為「它是第一個沒有發明任何新技術的技術",之所以說是對象,是因為把訪問的Web服務稱為對象,既然服務是對象,那麼服務肯定有相關的屬性和調用行為,這些屬性和行為是通過WSDL來描述的。如果按「簡單的對象訪問協議」來理解,相比「簡單對象訪問協議」要容易些。
四個部分
soap。n.(英文)肥皂 SOAP:簡單對象訪問協議 (SOAP:Simple Object Access Protocol) SOAP 包括四個部分: SOAP 封裝:它定義了一個框架 , 該框架描述了消息中的內容是什麼,誰應當處理它以及它是可選的還是必須的。 SOAP 編碼規則:它定義了一種序列化的機制,用於交換應用程序所定義的數據類型的實例。 SOAP RPC 表示:它定義了用於表示遠程過程調用和應答的協定。 SOAP 綁定:定義了一種使用底層傳輸協議來完成在節點間交換SOAP封裝的約定。 SOAP 消息基本上是從發送端到接收端的單向傳輸,但它們常常結合起來執行類似於請求 / 應答的模式。所有的 SOAP 消息都使用 XML 編碼。一條 SOAP 消息就是一個包含有一個必需的 SOAP 的封裝包,一個可選的 SOAP 標頭和一個必需的 SOAP 體塊的 XML 文檔。 把 SOAP 綁定到 HTTP 提供了同時利用 SOAP 的樣式和分散的靈活性的特點以及 HTTP 的豐富的特徵庫的優點。在HTTP上傳送 SOAP 並不是說 SOAP 會覆蓋現有的 HTTP 語義,而是 HTTP 上的 SOAP 語義會自然的映射到 HTTP 語義。在使用 HTTP 作為協議綁定的場合中, RPC 請求映射到 HTTP 請求上,而 RPC 應答映射到 HTTP 應答。然而,在 RPC 上使用 SOAP 並不僅限於 HTTP 協議綁定。 SOAP也可以綁定到TCP和UDP協議上。
協議結構
SOAP 消息格式: SOAP 標頭 <SOAP-ENV: Envelope Attributes> <SOAP-ENV:Body Attributes> </SOAP-ENV:Body> </SOAP-ENV:Envelope>目前主要在web服務中運用。
編輯本段語法規則
這里是一些重要的語法規則: SOAP 消息必須用 XML 來編碼 SOAP 消息必須使用 SOAP Envelope 命名空間 SOAP 消息必須使用 SOAP Encoding 命名空間 SOAP 消息不能包含 DTD 引用 SOAP 消息不能包含 XML 處理指令
編輯本段SOAP 核心技術
SOAP採用了已經廣泛使用的兩個協議:HTTP 和XML。HTTP用於實現 SOAP 的RPC 風格的傳輸, 而XML 是它的編碼模式。採用幾行代碼和一個XML 解析器, HTTP 伺服器( MS 的 IIS 或 Apache) 立刻成為SOAP 的 ORBS。SOAP 通訊協議使用 HTTP 來發送XML 格式的信息。HTTP與RPC 的協議很相似,它簡單、 配置廣泛,並且對防火牆比其它協議更容易發揮作用。HTTP 請求一般由 Web 伺服器軟體(如 IIS 和Apache)來處理, 但越來越多的應用伺服器產品正在支持HTTP。XML 作為一個更好的網路數據表達方式( NDR)。SOAP 把 XML 的使用代碼化為請求和響應參數編碼模式, 並用HTTP 作傳輸。具體地講, 一個SOAP 方法可以簡單地看作遵循SOAP編碼規則的HTTP請求和響應, 一個 SOAP 終端則可以看作一個基於HTTP 的URL, 它用來識別方法調用的目標。像CORBA/ IIOP一樣, SOAP不需要具體的對象綁定到一個給定的終端, 而是由具體實現程序來決定怎樣把對象終端標識符映像到伺服器端的對象。
編輯本段SOAP 的優點
(1) SOAP 是可擴展的。SOAP 無需中斷已有的應用程序, SOAP 客戶端、 伺服器和協議自身都能發展。 而且SOAP 能極好地支持中間介質和層次化的體系結構。 (2) SOAP 是簡單的。客戶端發送一個請求,調用相應的對象, 然後伺服器返回結果。這些消息是XML 格式的,並且封裝成符合HTTP 協議的消息。因此,它符合任何路由器、 防火牆或代理伺服器的要求。 (3) SOAP 是完全和廠商無關。SOAP可以相對於平台、 操作系統、 目標模型和編程語言獨立實現。另 外,傳輸和語言綁定以及數據編碼的參數選擇都是由具體的實現決定的。 (4) SOAP 與編程語言無關。SOAP 可以使用任何語言來完成, 只要客戶端發送正確SOAP 請求( 也就 是說, 傳遞一個合適的參數給一個實際的遠端伺服器)。SOAP 沒有對象模型, 應用程序可以捆綁在任何 對象模型中。 (5) SOAP 與平台無關。SOAP 可以在任何操作系統中無需改動正百分比法辦法常運行。
編輯本段PHP SOAP實例
php提供了一個專門用於soap操作的擴展庫,使用該擴展庫後 可以直接在php中進行soap操作。下面將介紹soap的基本操作。 一、soap擴展的使用方法 php的soap擴展庫通過soap協議實現了客服端與伺服器端的 數據交互操作。從php5.0後,php就自帶了soap的支持。使用 soap擴展庫首先需要修改php安裝目錄下的配置文件php.ini 來激活soap擴展庫。 在php.ini文件中找到如下所示的一行代碼,去掉前面的注釋(;)。 ;extension=php_soap.dll 修改後,重啟web伺服器即可激活soap擴展。在soap擴展庫中,主要 包括三種對象。 1、SoapServer SoapServer用於創建php伺服器端頁面時定義可被調用的函數及返回 響應數據。創建一個SoapServer對象的語法格式如下: $soap = new SoapServer($wsdl,$array); 其中,$wsdl為soap使用得wsdl文件,wsdl是描述Web Service的一種 標准格式,若將$wsdl設置為null,則表示不使用wsdl模式。$array是 SoapServer的屬性信息,是一個數組。 SoapServer對象的addFunction方法是用來聲明哪個函數可以被客戶端調用, 語法格式如下: $soap->addFunction($function_name); 其中,$soap是一個SoapServer對象,$function_name是需要被調用的函數名。 SoapServer對象的handle方法用來處理用戶輸入並調用相應的函數,最後返回 給客戶端處理的結果。語法格式如下: $soap->handle([$soap_request]); 其中,$soap是一個SoapServer對象,$soap_request是一個可選參數,用來表示 用戶的請求信息。如果不指定$soap_request,則表示伺服器將接收用戶的全部 請求。 2、SoapClient SoapClient用於調用遠程伺服器上的SoapServer頁面,並實現了對相應函數的調用 。創建一個SoapClient對象的語法格式如下: $soap = new SoapClient($wsdl,$array); 其中,參數$wsdl和$array與SoapServer相同。 創建SoapClient對象後,調用服務端頁面中的函數相當於調用了SoapClient的方法, 創建語法如下: $soap->user_function($params); 其中,$soap是一個SoapClient對象,user_function是伺服器端要調用的函數,$params 是要傳入函數的參數。 3、SoapFault SoapFault用於生成soap訪問過程中可能出現的錯誤。創建一個soapFault對象的語法格式 如下: $fault = new SoapFault($faultcode,$faultstring); 其中,$faultcode是用戶定義的錯誤代碼,$faultstring是用戶自定義的錯誤信息。soapFault 對象會在伺服器端頁面出現錯誤時自動生成,或者通過用戶自行創建SoapFault對象時生成。對於 Soap訪問時出現的錯誤,客戶端可通過捕捉SoapFalut對象來獲得相應的錯誤信息。 在客戶端捕獲SoapFault對象後,可以通過下面的代碼獲得錯誤代碼和錯誤信息。 $fault->faultcode;//錯誤代碼 $fault->faultstring;//錯誤信息 其中,$fault是在前面創建的SoapFault對象。 已刪除無關的內容。
編輯本段消息格式
SOAP在標准化消息格式環境中,可以做所有它能完成的工作。消息的主體部分 是「text/xml」形式的MIME類型,並且包含一個SOAP封套。該封套是一個XML文 檔。封套包含了 報頭(可選的)和報文(必須有的)。封套的報文部分總是用於 最終接收的消息,而報頭項目可以確定執行中間處理的目標節點。附件、二進制 數字及其他項目可以附加到報文上。 SOAP提供了一種讓客戶端指定哪個中間處理節點必須處理報頭項目的方法。由 於報頭與SOAP消息的主體內容是互不相關的,所以可用它們給消息添加信息,而 不會影響對消息報文的處理。 例如,報頭可用於為報文中包含的請求提供數字簽名。在這種情形下,身份驗 證/授權伺服器可以處理報頭項目獨立於報文可以剝離信息以驗證簽名。 一旦通過驗證,封套的其餘部分將被傳遞給SOAP伺服器,它將對消息的報文進行 處理。深入研究一下SOAP封套,有助於明了SOAP報頭和報文元素的位置和用途。
編輯本段剖析SOAP封套
SOAP 1.1規范提供了下面的封套示例:SOAP-ENV:mustUnderstand="1" 5DEF 在這個例子中,GetLastTradePrice請求被傳送給網路上某個位置的一個存儲 -引用服務。 該請求帶有一個字元型參數,一個訂單符號,並在SOAP響應中返回一 個浮點數。SOAP封套是表示SOAP消息的XML文檔的頂層元素。XML命名空間用於將SOAP標識 符與應用程序的特定標識符區分開。XML命名空間在SOAP中使用很頻繁,以把消息 的元素的作用域限制在一個特定的領域。理解SOAP命名空間有助於熟悉XML命名空 間規范。如果您沒有理解命名空間,也可以簡單地把它看作一種鄰近的標識符, 它通過把SOAP元素與特定的位置(真實的或想像的)相關聯,從而有助於惟一地 標識SOAP元素。 命名空間 上面例子中的第一個命名空間參照了在SOAP消息中定義元素和屬性的SOAP模式。 第二個命名空間參照了SOAP編碼,即前文中討論過的「Section 5」數據類型。 由於沒有指定額外的通用元素編碼,這種編碼將適用於整篇文檔。 報頭 在SOAP封套報頭示例中標識的第一個元素是一個transaction(交易)元素,它 帶有一個命名空間屬性和一個值為1的mustUnderstand屬性。既然mustUnderstand的屬性值設為1 ,接受該消息的伺服器必須在該transaction節點上執行中間處理。您可以對此 作這樣的解釋:伺服器與客戶端事先已就管理該報頭元素處理的語義達成了一 致,因而伺服器確切地知道要處理的元素的內容,本例中元素的內容是「5」。 如果接收消息的伺服器不理解transaction報頭的語義,它就會拒絕請求並拋出 一個錯誤。錯誤元素是SOAP報文和定義良好的機制的一個特殊部分,用於把錯誤信 息送回給客戶端。 像這樣的中間處理節點是SOAP可擴展性的一個例子。客戶端在SOAP消息中包含 這樣的節點,以在可以處理消息的報文內容前,指示要發生的特殊的處理需要。 要保證向後兼容不能提供這種處理的現有的伺服器,只需把mustUnderstand 屬性設置為0,它使操作是可選的。除了定義像上例中所示的transaction節點外,SOAP消息還可包含報頭項目, 它們用於指定節點執行身份驗證處理、加密、狀態的永久性、業務邏輯處理等。 報頭有助於把SOAP構建成一種可擴展的模態包模型。只需記住報頭處理是完全獨 立於SOAP消息的報文的。 報文 上面例子中的SOAP報文包含一個XML載荷,我們可以推測RPC沒有為我們對其作 詳細解釋。SOAP不僅是一種模態包模型,它還是一種相當神秘的包模型。沒有什麼跡象清楚地顯示RPC將要開始做什麼。我們在報文中所看到的是幾個 XML元素,其中一個用命名空間進行了限制。它取決於SOAP伺服器理解文檔語義並 執行正確的處理。事實上,伺服器提供了一種架構,以有意義的方式處理XML載 荷。這里的「有意義」意味著伺服器在某些後台資料庫上調用遠程過程,以為消 息報文中包含的股票-符號元素接收股票價格。所有這些魔術般的操作都是在SOAP RPC幕後發生的。
編輯本段SOAP-RPC
SOAP消息本質上是一種從發送方到接收方的單向傳輸,但是SOAP經常組合到實 現請求/響應機制中。要讓RPC使用SOAP,必須遵循幾條規則。首先,請求和響應 消息必須被編碼成結構類型。對一個操作的每一個輸入參數,都必須有一個同名 元素(或輸入結構的成員)作為參數。對每一個輸出參數,都必須有一個名稱匹 配的元素(或輸出結構的成員)。 基於RPC的觀點,會省略一些更早一點顯示的SOAP消息。只帶有報文部分的 SOAP請求與響應封套如下所示: 請求 DEF響應 22.50請求要調用GetLastTradePrice方法。注意響應定義了 GetLastTradePriceResponse操作。對附加響應到響應操作尾部的 一個常用的SOAP調用規則是:創建響應結構。這種輸出結構包含一個名稱為 price的元素,它返回方法調用的結果,假定為浮點型。 在SOAP封套中沒有什麼地方的數據類型是顯式聲明的,注意到這一點很重要, 這樣如果只查看SOAP消息,就不會知道符號類型或結果參數price(價格)的類 型。客戶端應用程序一般通過「Section 5」編碼定義數據類型,或通過與伺服器 私下達成的協議來定義數據類型。在任何一種情況下,這些包含在SOAP消息中的 定義都不是顯式的。 最後,為了進行RPC,需要一種低級協議如HTTP。盡管SOAP 1.0規范強制要求 使用HTTP作為傳輸協議,但SOAP 1.1規范(及其姊妹規范「帶有附件的SOAP消息」 )允許使用FTP、SMTP、甚至(可能)原始的TCP/IP套接字。所有這些對SOAP通用 的序列化和編碼規則,也適用於RPC參數。
編輯本段SOAP用例
Internet上某些地方的客戶端應用程序使用Web服務。 Web服務(通過SOAP)顯示對象方法。 對象方法訪問Web上任意位置的遠程數據。 對這些網路命題應用傳遞邏輯,我們可以為Web服務和SOAP下一個總的結論: 某些位置的客戶端可以使Web上任意位置的數據。這就是所要證明的。 下面是更加詳細一點的用例。 SOAP客戶端使用UDDI注冊來查找Web服務。不用直接操作WSDL,大多數情況下SOAP應用程序將硬連接到使用特定類型的埠和特定樣式的綁定,並且它將 通過UDDI動態配置要調用的、與發現的Web服務匹配的服務地址。 客戶端應用程序創建SOAP消息,它是一個可執行想要的請求/響應操作的 XML文檔。 客戶端把SOAP消息傳送給監聽SOAP請求的Web伺服器上的JSP或ASP頁面。 SOAP伺服器解析SOAP包並在其領域調用合適的對象方法,在SOAP文檔中包 含的參數中傳遞。在SOAP伺服器接收消息之前,中間處理節點可以執行SOAP報 頭指示的特殊功能,可視情況確定是否執行這步操作。 請求對象執行指示的功能,並返回數據給SOAP伺服器,它把響應打包到 SOAP封套中。伺服器把SOAP封套包裹在要發送回請求機器的響應對象中,如 servlet或COM對象。 客戶端接收對象,剝離出SOAP封套並把響應文檔發送給最初發出請求的程 序,完成請求/響應循環。
編輯本段小結
SOAP是一種基於XML的協議,它用於在分布式環境中發送消息,並執行遠程過 程調用。使用SOAP,不用考慮任何特定的傳輸協議(盡管通常選用HTTP協議), 就能使數據序列化。用SOAP來構建平台與語言中性的互操作系統是一個好的選擇。總之,SOAP和 Web服務已為在XML上構建分布式應用程序基礎結構所需的一切都考慮好了。通過解決COM和Java組件對象模型之間的沖突,SOAP把多個平台在訪問數據時所出現的 不兼容性問題減至最少。先把這些討論放在一邊,SOAP是一種適用於所有類型的對象實體的理想的媒介 即使對於像Brad Pitt和Edward Norton之類的好萊塢電影角色也可用作 一種通信媒介。就像在電影中一樣,期待著這種新技術帶來震撼世界的效果。

⑤ 如何給soap添加header頭 php

使用php 設置soapHeader時要如下進行,不然發出去的包會變成類似「<item><key>user</key><value>23107720</value></item>」的格式:  $auth_header = array( 'user'=>$key, 'password'=>$pwd );  // 下面的RequestSOAPHeader 對應 wsdl 定義裡面的 <xsd:element name="RequestSOAPHeader">..... $authvalues = new SoapVar($auth_header, SOAP_ENC_OBJECT,"RequestSOAPHeader",$uri); $header = new SoapHeader($uri, 'RequestSOAPHeader', $authvalues); $api = new SoapClient(null,$options); $api->__setSoapHeaders(array($header));不明白的話可以去後盾人看看相關的教學視頻。

⑥ 用php讀取xml soap,該怎麼處理

把它當xml 用simplexml解析
<?php
$soap=<<<SOAP
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="" xmlns:xsi="" xmlns:xsd="">
<soap:Body>
<QueryResponse xmlns="">
<QueryResult>
Order_flag=0&Name_num=2077&StartCity=SZX&EndCity=PEK&Dates=2012-5-31&.......後面還有好多這樣的數據。
</QueryResult>
</QueryResponse>
</soap:Body>
</soap:Envelope>
SOAP;
$xml=simplexml_load_string($soap);
$result = $xml->children('')
->children('')
->QueryResponse
->QueryResult;
echo $result;

⑦ 如何支持支持Soap

php的soap擴展庫通過soap協議實現了客服端與伺服器端的 數據交互操作。從php5.0後,php就自帶了soap的支持。使用 soap擴展庫首先需要修改php安裝目錄下的配置文件php.ini 來激活soap擴展庫。 在php.ini文件中找到如下所示的一行代碼,去掉前面的注釋(;)。 ;extension=php_soap.dll 修改後,重啟web伺服器即可激活soap擴展。

熱點內容
免費搭建在線查詢伺服器 發布:2024-04-19 08:17:28 瀏覽:45
vs資料庫實例 發布:2024-04-19 08:14:54 瀏覽:294
vfp9反編譯 發布:2024-04-19 08:11:31 瀏覽:380
火車軟卧無線密碼是多少 發布:2024-04-19 07:38:59 瀏覽:422
vb系統文件夾 發布:2024-04-19 07:29:58 瀏覽:739
qt怎麼添加文件夾 發布:2024-04-19 07:22:53 瀏覽:255
sql查詢表是否存在 發布:2024-04-19 06:11:48 瀏覽:622
T178Tccftp 發布:2024-04-19 06:11:35 瀏覽:185
電腦遠程訪問自己的伺服器 發布:2024-04-19 00:08:03 瀏覽:96
噸包演算法 發布:2024-04-19 00:02:13 瀏覽:328