2015-08-18 45 views
4

我使用Ubuntu 15.04 - 與以下設置64位:Apache將不會加載Zend的衛隊裝載機

阿帕奇

Server version: Apache/2.4.10 (Ubuntu), Server built: Jul 24 2015 17:25:18

PHP

PHP 5.6.4-4ubuntu6.2 (cli) (built: Jul 2 2015 15:29:28) Copyright, (c) 1997-2014 The PHP Group Zend Engine v2.6.0, Copyright (c), 1998-2014 Zend Technologies with Zend OPcache v7.0.4-dev, Copyright, (c) 1999-2014, by Zend Technologies

我的php.ini(最後5行)

; Local Variables: 
; tab-width: 4 
; End 
zend.loader=1 
zend_extension="/var/www/extensions/ZendGuardLoader_56.so" 

是的,ZendGuardLoader不會被加載(它沒有在「php -v」中提及,也沒有在「phpinfo()」中提到)。 線程安全已禁用!如果您需要其他選項,請告訴我。

我試過到目前爲止:

  • 去掉了 「zend.loader = 1」 選項,
  • 試圖 「zend_loader.enabled = 1」,而不是 「zend.loader」
  • 包括來自ZendGuardLoader舊版本(5.5代替5.6)
  • 改變從兩個文件中的所有者和組到我的賬戶(代替WWW的數據)
  • 改變了權限777,775,75 5

也很高興知道:

我的Apache的錯誤日誌也 「乾淨」。如果我重命名.so文件,我的Apache會記錄該異常。但在當前的設置,該文件是可讀的。不要誤會我的意思,但我希望像「ZendGuardLoader無法加載,因爲」消息..

UPDATE1

幾個後小時,我很害怕!我已經安裝vagrant incl。 「Debian 7.8」以及開始一切等等。在我的盒子上我安裝了PHP(5.4)和Apache,創建了www文件夾到同一個目的地,並下載了5.4 ZendGuard Loader。在我的盒子設置中,我做了同樣的事情,就像在我的主系統上 - > php.ini,最後一個輸入:「zend_extension =/vagrant/ZendGuardLoader.so」

該文件存在且可讀,等等。創建新的「info.php」(「phpinfo()」)後,它仍然沒有ZendGuardLoader擴展。命令php -v與主系統(版本上的差異)大體相同。爲PHP

解決方案-v

好球員,我的心被打破 - 但它不是固定的!我告訴過你,通過檢查php -v輸出是非常默認的(沒有ZendGuardLoader)。但(!):php -v被命令行(cli)執行 - 所以我在php5 \ cli \ php.ini中添加了「zend_extension」 - >就像一個魅力!

PHP 5.4.41-0+deb7u1 (cli) (built: May 22 2015 12:49:18) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies with Zend Guard Loader v3.3, Copyright (c) 1998-2013, by Zend Technologies

這就是我想要的。所以我通過使用命令行調用了phpinfo文件 - 並將輸出保存到一個單獨的文件中。正如我所看到的,ZendGuardLoader也是給出的!

但仍然存在Apache問題。 zend_extension行完全匹配apache2 \ php.ini和cli \ php.ini。

所以這不是一個權限問題,因爲CLI沒有問題。我認爲,阿帕奇壞了,因爲它不會加載少的特殊擴展..

新的一天 - 新思路

好球員,昨天我們得到了一點,爲什麼它不會工作在CLI上,但那不是主要問題。所以我已經在CLI和apache上整合了ioncube。 CLI的功能就像一個魅力。 Apache也不會加載ioncube。那麼這個apache有什麼問題?

我試圖通過在php5 \ apache2 \ conf.d \目錄中創建一個新文件來引發一些錯誤。這個新文件包含相同的「的zend_extension = /流浪者/ ZendGuardLoader.so」片段,因爲我的PHP5 \ Apache2的\ php.ini中 - 這樣的Apache2會試圖加載的.so兩次,並引發了預期的錯誤:

PHP Fatal error: [Zend Guard Loader] Extension "Zend Guard Loader" cannot be loaded twice in Unknown on line 0

Apache嘗試加載兩個擴展。所以我可能是對的,如果我會說,apache2加載擴展名,如果它只有一個!但是,似乎apache無法使用擴展名。記住 - php cli(「php -v」/「php -m」)可以!

回答

1

對於所有的人,誰想要知道的解決方案:

調試阿帕奇了一段時間之後,我發現,每包含的Apache2 \ php.ini中不會爲我正常工作。所以我在apache2 \ conf.d \中創建了一個新文件,並刪除了apache2 \ php.ini中的條目。

重新加載apache2沒有改變,但phpinfo()說,擴展已加載。我再次重新加載 - 最後!,一切正常。我不確定,我或apache2會發生什麼。

古怪的事情:我必須在重新啓動虛擬機後重新加載apache2兩次。但是在這個過程之後,一切都很完美。所以你們..

TL; DR;

  • 創建的Apache2 \ conf.d \新文件,並使用相同的 「的zend_extension = /路徑」
  • 重新啓動的Apache2兩次。
  • 獲利