簡體   English   中英

PHP SOAP 來自 CMD 的調用

[英]PHP SOAP call from CMD

腳本正在通過 PHP SOAP 客戶端發送一些數據,當我從瀏覽器執行它時,一切正常。 但是當我嘗試從 CMD 執行它時,我遇到了錯誤:

SOAP-ERROR: Encoding: string 'CBP\xe0...' is not a valid utf-8 string

我的 bat 文件如下所示:

@echo OFF
(
chcp 65001
"E:\xamp\xampp\php\php.exe" E:\xamp\xampp\htdocs\webapi\index.php
)

無論有沒有 chcp,我仍然會出錯。

我已經進行了測試字符集檢查,output 一直是 ASCII,即使在瀏覽器中也是如此。

$a = 'test text';

echo mb_detect_encoding($a);

$b = mb_convert_encoding($a, "UTF-8", "auto");
echo mb_detect_encoding($b);

$c = iconv("ASCII", "UTF-8", $a);
echo mb_detect_encoding($c);

$d = utf8_encode($a);
echo mb_detect_encoding($d);

任何幫助,將不勝感激。

這可能是與 Windows 相關的問題。 在 Linux 命令行中嘗試一下。

您也可以嘗試通過 PHP-CGI 而不僅僅是 CLI 來運行它。 就個人而言,當我在管道數據時,我曾在一些特殊情況下使用過 PHP,即使數據看起來相同,但直到我使用 CGI 版本才有效(您仍然可以從命令行調用它)。

就您的需要 go 而言,您在網頁中運行時的環境和從 CLI 運行時的環境也可能存在顯着不同的情況。 例如,當 PHP 從 CLI 運行時,您可以訪問系統的環境變量(在 $_SERVER 中)。 但是,這些在網頁內時不存在。 您可以通過在兩種環境中獲取請求(和/或標頭)的最終副本並在字節級別比較它們來查看 cURL 發送的內容是否存在差異。 這可能是你最好的選擇。

您也可以嘗試包含實際的(或類似的)SOAP 代碼,以便我們直接知道您在說什么廢話,而不是盲目地向可能的答案投擲飛鏢。

(如果您喜歡這個答案,請接受並投票給我。)

達斯汀

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM