Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
tenho a seguinte situação
Client-side: IE8
Server-side: RHEL4 + apache 2.2.14 + PHP 5.2.14
Problema: o IE8, por algum motivo, drop o ID de sessão quando usa session do php.
Isso só ocorre nesse servidor, pois em outros sites tudo funciona 100%.
Testei em pcs diferentes e ocorre o mesmo erro.
* drop -> perder, largar, soltar
outros browsers, inclusive, IE7, IE6, IE5 e até mesmo IE8 funcinonam! isso só ocorre com algumas versões do IE8 e somente com esse servidor.
Pesquisei bastante na web.. faz 1 semana que estou procurando algo, mas tudo que encontro são dicas referentes ao uso do P3P.
Testei de tudo quanto é jeito, mas não funciona.
As sessões funcionam. Elas são criadas normalmente mas o browser não está enviando via cabeçalho o valor de PHPSESSID, por isso, quando vai pra outra página, não consegur obter a sessão criada na página anterior. Posso ativar sessin_trans_id como true, mas a URL fica muito extensa, feia.. além de que a escrita automatica não reconhece links gerados via javascript, alguns iframes, etc.. aí tem que ter o trabalho de escrever manualmente o valor de session.name e PHPSESSID.
verifiquei tb o Timezone e está tudo ok, tanto no server como no client.
o site que mostrou mais opções de solução é esse:
http://genotrance.wordpress.com/2006/11/23/session-cookies-rejected-by-internet-explorer/
como já perdi muito tempo, quase 5 dias, resolvi parar tudo e fazer uso do trans_id = true e aplicar manualmente o PHPSESSID.. mesmo assim, ficou parecendo gambiarra.
Desconfio de que seja alguma configuração do Apache em relação a headers.
O servidor é administrado por terceiros, mas eu tenho acesso root e tudo mais, só que não posso modificar configurações sem antes consultar os administradores.
Eu posso alterar configurações desde que não afete outros serviços.
o httpd.conf está assim,
( vou postar aqui somente os trechos que não são de configuração padrão da instalação )
se alguem puder ajudar com alguma dica, agradeço.
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule info_module modules/mod_info.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule file_cache_module modules/mod_file_cache.so
LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so
aí em cima tem uma pancada de módulos que eu não utilizo mas outros serviços dentro do server utilizam, por isso nao posso desativar um a um pra diagnosticar... é um servidor de produção
#
<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
</IfModule>
por isso, penso que o problema pode estar relacionado a isso tb
<IfModule mod_mime_magic.c>
na instalação padrão nao tem
Alias /icons/ "/var/www/icons/"
<Directory "/var/www/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#
<IfModule mod_dav_fs.c>
# Location of the WebDAV lock database.
DAVLockDB /var/lib/dav/lockdb
</IfModule>#
#
#
#
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
#
#
#
#
#
#
#
#
#
agradeço pela resposta.
desculpe pelo post long, mas foi a forma mais resumida que pude postar no momento
quanto aos outros servers, o trans_id está desativado.
a situação ocorre:
- somente com alguns browsers versão IE8 ( não são todos os browsers IE8 )
- somente nesse server específico
por isso está descartada possibilidade de ser problema somente no cliente, pois o mesmo cliente em qualquer outro site ou mesmo hospedando o mesmo sistema php em outro server, tudo funciona perfeitamente, mesmo sem usar trans_id
php está compilado assim:
'./configure' '--build=i686-redhat-linux-gnu' '--host=i686-redhat-linux-gnu' '--target=i386-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/lib' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--disable-rpath' '--with-pear' '--with-bz2' '--with-curl' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-openssl' '--with-pspell' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-wddx' '--with-kerberos' '--enable-ucd-snmp-hack' '--with-unixODBC=shared,/usr' '--enable-shmop' '--enable-calendar' '--with-mime-magic=/etc/httpd/conf/magic' '--without-sqlite' '--with-apxs2=/usr/sbin/apxs' '--with-mysql' '--with-mysqli' '--with-gd' '--disable-dba' '--without-unixODBC' '--disable-pdo' '--disable-xmlreader' '--disable-xmlwriter' '--enable-zend-multibyte' '--enable-mbstring'
corrigindo alguns dados
PHP 5.2.11
Apache/2.2.3 (Red Hat)
esse trecho parece não ter importância
'with-config-file-scan-dir=/etc/php.d'
pois "/etc/php.d" está vazio.
eu suspeito de que seja algo relacionado aos headers
talvez algum modulo do apache ou algum aplicativo no server ou mesmo configuração do php esteja confitando os headers do browser cliente fazendo que seja perdido o SESSID do PHP.
hoje parei a manhã inteira só pra testar..
nada.. nao deu nada..
mas tem um detalhe importante.
sem querer, já aborrecido sem saber o que fazer, estava olhando a tela do pc e vi na lista de arquivos do software cliente de ftp, uma coisa estranha
as datas dos arquivos modificados estão corretas, porém, os horários estão no futuro
alterei um arquivo hoje às 11:00am e enviei via ftp.
na listagem do ftp no lado server, o horário ficou 10 horas à frente, às 21:00pm
fiz um teste no php escrevendo
echo date( 'Y-m-d h:i:s' ) sem usar configuração de timezone, e está correto, inclusive o horário.. então não deve ser nada no php
desconfio de que seja o terceiro problema citado no link que postei acima
http://genotrance.wordpress.com/2006/11/23/session-cookies-rejected-by-internet-explorer/
>
Final Solution
The timezone issue did give me a hint to check the time on my client and server. My client is a Windows laptop which had the correct time and timezone thanks to being synchronized with the NTP protocol. My server on the other hand was out of sync.
The timezone was correct, but the UTC time was set to my local time instead. As a result, the server was actually six hours in the past as far as the client was concerned. A timeout of one hour would have expired in the past for an IE instance running on my client. No wonder IE was rejecting my sessions.
I ran ntpdate to fix my time and then reset my timezone using tzselect.
I then refreshed IE which immediately started accepting the sessions. All aspects of my application started working correctly. So much for so little.
Moral of the story, use NTP to ensure that your machines have their time set correctly.
já tinha verificado isso anteriormente
executo o comando DATE no console e retorna a data e horário corretos
Thu Sep 2 13:20:11 JST 2010
então.. o que pode ser ?
é o apche que está usando algum timezone diferente ou php , mas onde ?
por que os arquivos na listagem do ftp aparecem com horário 10 horas a frente ?
finalmente resolvido.
fiz um teste criando um novo virtualhost nesse mesmo server e criei um subdominio pra testes e apontei pra esse mesmo server
fiz o teste de sessão do php e funcionou 100% sem precisar ativar o trans_id
mas o problema ainda continuava no outro site
foi então que resolvi mudar o nome do subdomínio.
os caras que administram o host tinham criado um domínio com uso de "undescore" ( underline )
exemplo
www_test.dominio.com
pedi pra trocar pra
www-test.dominio.com
tudo funcionou!
agora, por quê o caracter undescore no nome do subdomínio estava interferindo na validação da sessid do php ?
ps: o problema citado no post anterior, sobre as datas do software ftp, é bug do programa client ftp.
no server está tudo ok.
O caractere "_" é muito utilizado em serviços DNS, talvez por este motivo o comportamento estivesse estranho. Mas de fato não tenho referências de documentação onde explique isto tecnicamente.
Este controle é responsabilidade do PHP, não do servidor Apache. Entendo que o TRANS_ID deve estar habilitado nos demais servidores... já verificou?