我正在處理的Web應用程序需要能夠處理相同PHP擴展的兩個不同版本。 (特別是Mapserver for Mapserver 5.6和MapScript for Mapserver 6.2)如何加載相同php擴展的兩個版本?
在php執行開始之前,腳本不知道需要加載哪個版本。 (但每個請求只需要一個擴展名。)
我原來的計劃是使用php內置的dl函數,但是我發現dl由於安全問題而被禁用。 (http://php.net/manual/en/function.dl.php)
有什麼辦法可以在執行過程中加載擴展嗎?或者可能總是加載兩者,但將它們放在不同的名稱空間中,以便可以分別訪問它們?
除非擴展名支持命名空間,否則你可能不能。沒有機制來加載插件/模塊,並將它們填入與默認不同的命名空間,例如, 'dl('v1.so',\ this \ that)'。 –
如果您不能重新編譯這兩個擴展,並且如果您只需加載兩個用於執行某些測試的操作,就會有一個*頭* *來唯一標識擴展名,並且可以使用二進制編輯器更改擴展名顯示的字母在內部,也可以將函數名稱改爲1個字母(並且也可以在任何地方重命名文件名)。免責聲明:沒有嘗試自己。 –