[請益] 請問PHP版本不同的解決之道

看板PHP作者 (VICKY)時間10年前 (2013/11/07 16:20), 編輯推噓9(9072)
留言81則, 16人參與, 最新討論串1/1
午安, 想請教大家一個問題, 我們公司請資訊公司建置一個網站, 現在要把整個資料庫移置公司伺服器主機, 但因為我們使用的版本是5.3, 資訊公司要求5.2,否則會產生BUG, 在公司堅持要放在同一個伺服器主機,且主機環境PHP得5.3的情況下, 有何方法可以排除BUG或不同版本共存嗎? 這應該會衝突吧?(灌了PHP 5.2以後原本吃5.3的網站都掛掉了@@) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.144.113

11/07 16:39, , 1F
VM?
11/07 16:39, 1F

11/07 17:00, , 2F
換資訊公司XD?
11/07 17:00, 2F

11/07 17:18, , 3F
你講掛的狀況是app 5.3 > svr 5.2 公司網站依你描述是
11/07 17:18, 3F

11/07 17:19, , 4F
app 5.1 < svr 5.3 這兩者有關聯嗎
11/07 17:19, 4F

11/07 17:22, , 5F
換公司比較簡單....
11/07 17:22, 5F
※ 編輯: vicvicky 來自: 114.34.144.113 (11/07 17:25)

11/07 17:26, , 6F
誤打成5.1,抱歉
11/07 17:26, 6F

11/07 17:27, , 7F
網站已經做好了,錢也付了,現在只是要移過來,不可能告
11/07 17:27, 7F

11/07 17:27, , 8F
訴他們"因為沒辦法裝在我們主機上,所以我們要退錢"吧QQ
11/07 17:27, 8F

11/07 17:28, , 9F
VM是指虛擬系統嗎?
11/07 17:28, 9F

11/07 17:42, , 10F
我覺得怪怪的,感覺是你們的系統比較新。
11/07 17:42, 10F

11/07 17:42, , 11F
理論上,5.3向下相容於5.2
11/07 17:42, 11F

11/07 17:43, , 12F
但比較有可能產生BUG大多問題出在php.ini設定
11/07 17:43, 12F

11/07 17:43, , 13F
通常最有可能是發生原本程式使用不嚴謹寫法。
11/07 17:43, 13F

11/07 17:43, , 14F
例如你的設定output_buffering是false
11/07 17:43, 14F

11/07 17:44, , 15F
off才對
11/07 17:44, 15F

11/07 17:45, , 16F
然後他們卻設定成ON或是給數值(例:4096)
11/07 17:45, 16F

11/07 17:45, , 17F
然後就把session_start()或是header()給他亂放
11/07 17:45, 17F

11/07 17:46, , 18F
而其實呢,你把5.2的php.ini全照最嚴謹模式設定
11/07 17:46, 18F

11/07 17:46, , 19F
別說5.3不能跑,就是5.2也照樣不能跑。
11/07 17:46, 19F

11/07 17:46, , 20F
常見情形就是其實他們是灌appserv 2.5.10......
11/07 17:46, 20F

11/07 17:47, , 21F
我公司的案子是在PHP5.3的環境下開發的。
11/07 17:47, 21F

11/07 17:47, , 22F
但我自己架了一台CENTOS跑的是PHP5.5
11/07 17:47, 22F

11/07 17:48, , 23F
可我整個專案移過去跑也沒ERROR過。
11/07 17:48, 23F

11/07 17:50, , 24F
你可以建議網管把你們的5.3設定檔改成較寬鬆(較危險)
11/07 17:50, 24F

11/07 17:50, , 25F
然後看看所謂5.2模式寫出來的code能不能跑。
11/07 17:50, 25F

11/07 17:50, , 26F
能跑的話............換一家公司吧。
11/07 17:50, 26F

11/07 17:58, , 27F
這可不是向下相容可以解決的,不久前我們也碰到相同的事...
11/07 17:58, 27F

11/07 17:59, , 28F
我們家的環境是5.3,但廠商的開發環境是5.2,程式碼一放上來
11/07 17:59, 28F

11/07 18:00, , 29F
log檔就被塞爆了,沒多久就倒站了,一整個無言...
11/07 18:00, 29F

11/07 18:01, , 30F
後來我們把 LOG 檔給廠商,他們看完後表示要修的東西太多,根
11/07 18:01, 30F

11/07 18:02, , 31F
本修不完,而且也搬出合約中並無載明php版本,雖然我們用資安
11/07 18:02, 31F

11/07 18:03, , 32F
去壓,但是廠商吃定我們有驗收時程壓力(這案子搞爛了,我也會
11/07 18:03, 32F

11/07 18:04, , 33F
倒大楣),最後鼻子摸著還是退回5.2版,讓案子順利結束.
11/07 18:04, 33F

11/07 18:50, , 34F
php 5.2 & 5.3 只是有些函式的新舊交替?剩下的error應該
11/07 18:50, 34F

11/07 18:51, , 35F
程式寫得不夠嚴謹 與版本無關吧
11/07 18:51, 35F

11/07 18:55, , 37F
這時就要說,如果function和method很單純一進一出
11/07 18:55, 37F

11/07 18:55, , 38F
那要修問題就很簡單了。
11/07 18:55, 38F

11/07 18:56, , 39F
怕的是……他們使用一式到底的寫法。這完全就難分難捨了。
11/07 18:56, 39F

11/07 18:58, , 40F
寫程式要是按功能類別獨立開來不要混在一起寫的話。
11/07 18:58, 40F

11/07 18:58, , 41F
根本就不怕遇到這種版本異動的狀況。
11/07 18:58, 41F

11/07 18:59, , 42F
搞不好還可以判斷版本來自動切換跑功能相同但程式碼不同的
11/07 18:59, 42F

11/07 18:59, , 43F
函式。
11/07 18:59, 43F

11/07 21:15, , 44F
php5.2跟5.3的設計環境差太多
11/07 21:15, 44F

11/07 21:16, , 45F
你們可以付點錢要求修正
11/07 21:16, 45F

11/07 21:17, , 46F
因為這之間產生的資訊安全問題真的很麻煩,php5.2 的exploit
11/07 21:17, 46F

11/07 21:17, , 47F
隨隨便便都可以弄垮伺服器
11/07 21:17, 47F

11/07 21:17, , 48F
說共存解法吧 CGI類模式(CGI fastCGI)只要針對那部分
11/07 21:17, 48F

11/07 21:18, , 49F
網站去調整改用5.2的PHP (另外裝一份)
11/07 21:18, 49F

11/07 21:18, , 50F
FASTCGI也要小心,因為之前也才爆出 exploit
11/07 21:18, 50F

11/07 21:19, , 51F
我對這種不求上進的資訊公司還蠻感冒的-__
11/07 21:19, 51F

11/07 21:19, , 52F
不過只能5.2實在... 要更高版本還能接受...
11/07 21:19, 52F

11/07 21:20, , 53F
跟fastCGI無關啊 只要是軟體都會有exploit
11/07 21:20, 53F

11/07 21:20, , 54F
這只是說真的無法就CGI另外給5.2的PHP去解譯
11/07 21:20, 54F

11/07 21:21, , 55F
不過個人是覺得這種廠商下次別找了...
11/07 21:21, 55F

11/07 21:41, , 56F
先謝謝各位前輩的回覆,雖然外行的我看了還是霧煞煞QQ
11/07 21:41, 56F

11/07 21:43, , 57F
目前我們只能想到的方法:(1)給他們5.2的環境(2)另外花錢
11/07 21:43, 57F

11/07 21:46, , 58F
但就擔心tk大講的問題,後續我們維護會很困難
11/07 21:46, 58F

11/07 22:02, , 59F
www.php.net/manual/en/migration53.incompatible.php
11/07 22:02, 59F

11/07 22:02, , 60F
5.2到5.3不支援的部分
11/07 22:02, 60F

11/07 22:03, , 61F
不被支援的部分大多都是原本默許的不嚴謹寫法
11/07 22:03, 61F

11/07 22:04, , 62F
先了解廠商說的BUG到底是啥吧
11/07 22:04, 62F

11/07 22:04, , 63F
感覺整個就是我用的是5.2 你要用5.3出事我不管的感覺
11/07 22:04, 63F

11/07 22:05, , 64F
搞不好根本也沒在5.3上面試跑過
11/07 22:05, 64F

11/07 22:54, , 65F
11/07 22:54, 65F

11/08 00:38, , 66F
nginx + php-fpm(同時安裝5.2及5.3起不同port)
11/08 00:38, 66F

11/08 00:52, , 67F
樓上這招不錯,不過要手動編譯就是了 XD
11/08 00:52, 67F

11/08 02:10, , 68F
本來就想推nginx+php-fpm 我還有win環境的php存在XDD
11/08 02:10, 68F

11/08 02:10, , 69F
不過nginx不是必備啦www
11/08 02:10, 69F

11/08 02:12, , 70F
至於手動編譯並不會困難啊 PHP Core也不會編太久~
11/08 02:12, 70F

11/08 08:25, , 71F
目前移到我們的主機後遇到的BUG是無法新增資料,因為無法
11/08 08:25, 71F

11/08 08:26, , 72F
新增,所以也還無法測試還有沒有後續的問題,但所有功能
11/08 08:26, 72F

11/08 08:27, , 73F
在網站還在資訊公司主機時就測試沒問題並驗收了
11/08 08:27, 73F

11/08 20:10, , 74F
貴公司需要改善作業流程。
11/08 20:10, 74F

11/09 21:05, , 75F
可能是用了PHP5.3已經不再提供的function,又不肯改用5
11/09 21:05, 75F

11/09 21:07, , 76F
.3的替代function
11/09 21:07, 76F

11/09 23:45, , 77F
如果是樓上說的原因,那就是要看他們有沒有寫function
11/09 23:45, 77F

11/09 23:46, , 78F
如果有,那問題一切好解決,沒有的話就GG吧!改到死。
11/09 23:46, 78F

11/10 00:00, , 79F
就是改到死廠商才不想改啊...(菸
11/10 00:00, 79F

11/12 12:41, , 80F
支付合理費用就沒有衝突問題了 XD
11/12 12:41, 80F

11/17 20:00, , 81F
驗收了誰鳥你
11/17 20:00, 81F
文章代碼(AID): #1IUqr71H (PHP)