我在客户端服务器中部署Testlink时遇到问题。问题的根源似乎是它没有正确保存/检索会话中的信息,这会在安装和尝试日志记录过程中导致错误。
在安装过程中,一个变量存储在会话(installationType)中,指示它是新安装还是升级。这个变量的值为"new",但当从一个屏幕移动到另一个屏幕时,该值会丢失,假设我正在执行升级,无法继续。作为一种解决方法,我对代码进行了更改,在每个屏幕上将此变量设置为"new",这样我就正确地完成了安装过程。但当我尝试登录时,我发现了另一个问题:在输入用户数据和访问权限后,屏幕刷新并重新显示登录屏幕,没有任何错误消息(事实上,日志显示登录成功)。此行为与禁用浏览器中的cookie相同。
相同版本的Testlink(1.9.14)已在具有相同配置的本地服务器上顺利安装:
- Ubuntu:14.04.1(64位)
- Apache:2.4.7
- PHP 5.5.9-1ubuntu4.16
- MySQL:5.5.49
不同的是,我们的Ubuntu安装在Debian的虚拟机上,而Ubuntu客户端部署在Azure中。
我比较了一台机器和另一台机器上的php.ini配置,没有发现显著的差异。比较phpinfo()显示的信息,我都没有发现任何相关的信息(如果需要,可以在这里附上两者),但我在本地服务器的"PHP变量"部分看到了这个cookie:
COOKIE["TESTLINKUSERAUTHCOOKIE"]
此cookie不会出现在客户端服务器中(我想登录后不会创建)。
我的猜测是,Azure管理面板中有一些东西(我无权访问)需要配置,就像打开端口需要在iptables和Azure中完成一样。
任何建议都将不胜感激。
谜团已解决。这个问题与Azure无关,而是与自己的服务器配置有关。
在将Apache和PHP的所有配置文件与新安装进行比较后,我发现:
/etc/apache2/站点已启用/000 default.conf
<IfModule mod_headers.c>
Header set X-UA-Compatible "IE=edge"
Header set X-Frame-Options "DENY"
# Commented out, because fcm4 use external JavaScript
# Header set Content-Security-Policy "script-src 'self'; object-src 'self'"
Header always set Strict-Transport-Security "max-age=16070400; includeSubDomains"
Header set X-Content-Type-Options "nosniff"
Header set X-XSS-Protection "1; mode=block"
Header unset X-Powered-By
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
Header set X-Permitted-Cross-Domain-Policies "master-only"
Header edit Set-Cookie ^(.*)$ "$1;HttpOnly;Secure"
<FilesMatch "'.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|webmanifest|woff2?|xloc|xml|xpi)$">
Header unset X-UA-Compatible
Header unset X-Frame-Options
Header unset Content-Security-Policy
Header unset X-XSS-Protection
</FilesMatch>
</IfModule>
导致这种行为的线路是:
- 标题集X-Frame-Options"DENY"
- 页眉编辑设置Cookie^(.*)$"$1;HttpOnly;Secure"
评论出来后,一切都好。
Php会话问题通常与Apache/Php使用的临时文件夹有关。
我想Testlink实现了一个非常经典的基于cookie的会话系统。按照本文操作,以确保正确配置会话处理。
https://support.qualityunit.com/021373-How-To-Enable-Session-Support-for-PHP
你可能也对这个链接感兴趣。这是一个关于在Azure机器上安装Testlink的分步指南:
http://thusharapriyantha.blogspot.com.es/2015/04/install-testlink-1913-stormbringer-in.html?m=1
走运。。。亲切问候