Eu tenho um erro PHP de SOAP misteriosa no meu host, mas não pode duplicar localmente
-
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 ??strong>: O meu comentário abaixo que os relatórios phpinfo()
que furl é permitido; estranho!
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
.