2019年8月11日 星期日

CentOS 移植心得 (SAML & PHP版本問題)

這邊快乾死了,來澆點水。

最近在做幾件事,第一件是把 Ubuntu 14.04上同事開發的系統移植到CentOS 7上。

一開始在SAML(SSO)卡了很久。實在沒有辦法去認真研究了一下它的架構,最後發現在
/var/simplesamlphp/metadata
裡面的
saml20-sp-remote.php
要新增以下內容
$metadata['http://10.100.32.31/sso/module.php/saml/sp/metadata.php/default-sp'] = array (
  'AssertionConsumerService' => 'http://10.100.32.31/sso/module.php/saml/sp/saml2-acs.php/default-sp',
  'SingleLogoutService' => 'http://10.100.32.31/sso/module.php/saml/sp/saml2-logout.php/default-sp',

);

我原以為這樣就解決了。但系統移過去就是沒有畫面。在log檔沒有任何一個字的錯誤訊息,就這樣抓了三週。幾乎把所有我想過的方法都試過了。

後來有一天早上我福至心靈,把副程式的log都開起來(本來只有開主程式,沒有想到副程式裡的log都被關掉)才發現是empty這個函數在不同的PHP版本有不同的處理方式。

Prior to PHP 5.5, empty() only supports variables; anything else will result in a parse error. In other words, the following will not work: empty(trim($name)). Instead, use trim($name) == false.

我的舊主機是PHP 5.5.9,新的主機是5.4。所以才會遇到這個問題。

最後把PHP升版後終於解決了。

沒有留言:

張貼留言