Eu tenho um erro PHP de SOAP misteriosa no meu host, mas não pode duplicar localmente

StackOverflow https://stackoverflow.com/questions/426747

  •  06-07-2019
  •  | 
  •  

Pergunta

Já corri em toda um erro PHP / SABÃO interessante que tem me impedido. Depois de pesquisar eu não encontrei uma explicação plausível, e eu aprecio sua ajuda. Aqui está o plano:

Eu tenho um site construído em PHP / CodeIgniter que usa SOAP para se comunicar através de SSL com um sistema de back-end fornecido por um terceiro (vamos chamá-los "Empresa X" para proteger os inocentes) não em meu controle. No espírito de boa MVC, eu coloquei o código específico para interagir com essa fonte de dados em um modelo separado (system/application/models/company_x.php). Tenho vindo a desenvolver localmente usando MAMP no meu Mac, e quase tudo foi relativamente suave por meio de testes e desenvolvimento; incluindo chamar o serviço web da Companhia X sobre SSL. Eu provavelmente deveria mencionar que o seu serviço web tinha WSDL estranho que PHP 5 do SABÃO não gostou. Coisas como parâmetros necessários que não estavam lá. Tem sido um pouco estranho para chamar métodos sabão muito explicitamente, mas eu tenho que ir e funcionou por meio de testes. Eu mesmo implantado-lo para um site de teste em Mosso , e eu podia jurar que ele trabalhou por um tempo até lá também.

Imagine minha surpresa quando cada chamada para o serviço web SOAP começando erros produtoras como o seguinte:

    A PHP Error was encountered
    Severity: Warning
    Message: SoapClient::__doRequest() [soapclient.--dorequest]: 
    WARNING: URL fopen access
    Filename: models/company_x.php
    Line Number: 86

Os logs de erros não deu mais nenhuma informação que não seja o caminho completo para o arquivo de modelo no servidor. Ele funciona localmente, e eu pensei que trabalhou em Mosso antes. Talvez Mosso mudou suas configurações, e SOAP desativado ou algo assim. Um pouco phpinfo() mais tarde, e eles têm mais do que suficiente. Eu pensei que talvez o meu Mac é mais tolerante do certificado SSL. Afinal de contas, é um GoDaddy * .domain.com cert, talvez fopen está tendo problemas para obter através. Eu chicoteado até um arquivo de teste para conectar através de SSL, e colocá-lo em Mosso e funcionou.

Eu estou perguntando por que é o acesso fopen repente um problema para SOAP? O que é sobre Mosso que está fazendo isso difícil de repente? Preciso substituir alguma configuração php.ini? Poderia ser, como é tantas vezes com erros inúteis como este, algo completamente diferente?

Update: aqui é o comando configure de phpinfo ():

'./configure' '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib64' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--disable-rpath' '--without-pear' '--with-bz2' '--with-curl' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-png' '--with-pspell' '--with-expat-dir=/usr' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-track-vars' '--enable-trans-sid' '--enable-yp' '--enable-wddx' '--with-kerberos' '--enable-ucd-snmp-hack' '--with-unixODBC=shared,/usr' '--enable-memory-limit' '--enable-shmop' '--enable-calendar' '--enable-dbx' '--enable-dio' '--with-ming' '--with-mime-magic' '--with-sqlite=shared' '--with-libxml-dir=/usr' '--with-xml' '--with-system-tzdata' '--with-apxs2=/usr/sbin/apxs' '--without-mysql' '--without-gd' '--without-odbc' '--disable-dom' '--disable-dba' '--without-unixODBC' '--disable-pdo' '--disable-xmlreader' '--disable-xmlwriter' '--disable-json'

Nota : O meu comentário abaixo que os relatórios phpinfo() que furl é permitido; estranho!

Foi útil?

Solução 3

OK, um pouco de atualização sobre este problema: o erro misteriosamente desapareceu sem qualquer alteração de mim. Vou ter que assumir que houve algum erro de configuração ímpar em Mosso que foi silenciosamente fixo. Também é remotamente possível que havia um problema com a instalação da Companhia X. Esse é o pior tipo de correção IMO! Obrigado na mesma a todos que olhou em sobre este assunto.

Outras dicas

Você pode ter este http://us.php.net/ manual / en / filesystem.configuration.php # ini.allow-url-fopen

faltando.

Lembre-se, você sempre pode usar phpinfo () para comparar visualmente o ambiente entre máquinas.

Outra possibilidade (de os docs PHP ):

Nota: Quando o modo de segurança estiver ligado, o PHP verifica se o diretório no qual o script está em operação tem o mesmo UID (proprietário) do script que está sendo executado
.

EDIT: Hmm .. Eu não vejo modo de segurança em suas opções de compilação do PHP por isso é provavelmente não que

.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top