PHP SOAP вызов из CMD - PullRequest
       21

PHP SOAP вызов из CMD

2 голосов
/ 01 июня 2011

Скрипт отправляет некоторые данные PHP SOAP-клиентом, когда я запускаю его из браузера, все идет хорошо.Но когда я пытаюсь выполнить его из CMD, я получаю сообщение об ошибке:

SOAP-ERROR: Кодировка: строка 'CBP \ xe0 ...' не является допустимой строкой utf-8

Мой bat-файл выглядит так:

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

С или без chcp Я все еще получаю ошибку.

Я проверил тестовую кодировку, и все время выводится в формате ASCII, даже в браузере. Файл PHP кодируется в формате utf-8, а файл bat в формате ANSI.

$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);

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 09 сентября 2011

Это может быть серьезной проблемой, связанной с Windows. Попробуйте это в командной строке Linux.

Вы также можете попробовать запустить его через PHP-CGI, а не только через CLI. Лично я использовал PHP в некоторых экзотических ситуациях, когда я передавал данные, и хотя данные казались идентичными, это было до тех пор, пока я не использовал работающую версию CGI (ее все еще можно вызвать из командной строки).

Может также случиться так, что в среде, когда вы работаете на веб-странице, и в среде, в которой вы работаете из интерфейса командной строки, есть что-то значительно отличающееся в том, что касается ваших потребностей. Например, когда PHP запускается из CLI, у вас есть доступ к системным переменным среды (в $ _SERVER). Тем не менее, они не там, когда внутри веб-страницы. Вы можете увидеть, есть ли разница в том, что отправляет cURL, получив окончательную копию запроса (и / или заголовков) в обеих средах, и сравнив их на уровне байтов. Это, вероятно, ваш лучший выбор.

Вы также можете попытаться включить действительный (или аналогичный) код SOAP, чтобы мы знали, о чем вы, собственно, говорите, а не слепо бросали дротики при возможных ответах.

(Если вам понравился этот ответ, примите его и проголосуйте за меня.)

Дастин

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...