Здесь мы идем почти полтора года спустя ...
В моем недавнем полу-подобном опыте это не было ошибкой php. Это проблема, связанная с тем, как написан ваш веб-сервис и как PHP читает вывод. Я столкнулся с подобной проблемой (даже вплоть до getLastResponse, возвращающего правильный XML) и обнаружил, что проблема была не столько в PHP или моей функции SOAP, сколько в том, что результат «сломанной» функции явно не определенный курсор.
Пример неправильного определения курсора:
PROCEDURE GetBlahByBlahID(IN IN_BLAH_ID VARCHAR, IN IN_BLAHPKG VARCHAR,
OUT result CURSOR
) BEGIN ...
Пример правильного определения курсора:
PROCEDURE GetBlahByBlahID(IN IN_BLAH_ID VARCHAR, IN IN_BLAHPKG VARCHAR,
OUT result CURSOR ( BLAH VARCHAR(250),
BLAH2 VARCHAR(250),
BLAH_DATE DATE,
BLAH3 VARCHAR(250))) BEGIN ...
Очевидно, что Java может нормально обрабатывать «плохой» / неявный вывод, но PHP возвращает массив нулевых объектов.
Не уверен, поможет ли это вам, но определение вывода функции веб-службы как "хорошего" способа выше решило мою проблему.