Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

VascoDaGama

[Resolvido] client-side: IE8, server-side RHEL4 + apache 2.2.14

Recommended Posts

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

 

 

#
# TypesConfig describes where the mime.types file (or equivalent) is
# to be found.
#
TypesConfig /etc/mime.types
esse trecho é personalizado

o original de instalação vem assim:

 

<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>
#   MIMEMagicFile /usr/share/magic.mime
    MIMEMagicFile conf/magic
</IfModule>
uso do mime magic

 

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>

#
# WebDAV module configuration section.
# 
<IfModule mod_dav_fs.c>
    # Location of the WebDAV lock database.
    DAVLockDB /var/lib/dav/lockdb
</IfModule>
esse trecho acho que nao influencia em nada 




#
# Redirect allows you to tell clients about documents which used to exist in
# your server's namespace, but do not anymore. This allows you to tell the
# clients where to look for the relocated document.
# Example:
# Redirect permanent /foo http://www.example.com/bar

#
# Directives controlling the display of server-generated directory listings.
#

#
# IndexOptions: Controls the appearance of server-generated directory
# listings.
#
IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable

#
# AddIcon* directives tell the server which icon to show for different
# files or filename extensions.  These are only displayed for
# FancyIndexed directories.
#
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

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^^

#
# DefaultIcon is which icon to show for files which do not have an icon
# explicitly set.
#
DefaultIcon /icons/unknown.gif

#
# AddDescription allows you to place a short description after a file in
# server-generated indexes.  These are only displayed for FancyIndexed
# directories.
# Format: AddDescription "description" filename
#
#AddDescription "GZIP compressed document" .gz
#AddDescription "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz

#
# ReadmeName is the name of the README file the server will look for by
# default, and append to directory listings.
#
# HeaderName is the name of a file which should be prepended to
# directory indexes. 
ReadmeName README.html
HeaderName HEADER.html

#
# IndexIgnore is a set of filenames which directory indexing should ignore
# and not include in the listing.  Shell-style wildcarding is permitted.
#
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

 

 

 

#
# ForceLanguagePriority allows you to serve a result page rather than
# MULTIPLE CHOICES (Prefer) [in case of a tie] or NOT ACCEPTABLE (Fallback)
# [in case no accepted languages matched the available variants]
#
ForceLanguagePriority Prefer Fallback

#
# Specify a default charset for all content served; this enables
# interpretation of all content as UTF-8 by default.  To use the 
# default browser choice (ISO-8859-1), or to allow the META tags
# in HTML content to override this choice, comment out this
# directive:
#
AddDefaultCharset Off
#AddDefaultCharset UTF-8
# For type maps (negotiated resources):
# (This is enabled by default to allow the Apache "It Worked" page
#  to be distributed in multiple languages.)
#
AddHandler type-map var

#
# Filters allow you to process content before it is sent to the client.
#
# To parse .shtml files for server-side includes (SSI):
# (You will also need to add "Includes" to the "Options" directive.)
#
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

 

 

 

#
# The following directives modify normal HTTP response behavior to
# handle known problems with browser implementations.
#
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

#
# The following directive disables redirects on non-GET requests for
# a directory that does not include the trailing slash.  This fixes a 
# problem with Microsoft WebFolders which does not appropriately handle 
# redirects for folders with DAV methods.
# Same deal with Apple's DAV filesystem and Gnome VFS support for DAV.
#
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully

pode ser esse último código ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este controle é responsabilidade do PHP, não do servidor Apache. Entendo que o TRANS_ID deve estar habilitado nos demais servidores... já verificou?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

 

 

# ntpdate pool.ntp.org

# 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 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.