使用php农场激活php扩展时出现问题


Issue activating a php extension using PHP Farm

我正在实现一个软件(Getsy),它需要PHP5.4和ZendGuard6(ZendGuard)。

在这个场合,我使用的是Ubuntu 14.04的AWS实例。由于Ubuntu 14.04默认带有PHP 5.5+,我需要安装PHP 5.4。为此,我安装了PHP农场。

要在站点之间更改PHP版本,我有以下cgi-bin脚本:

#!/bin/sh
PHP_FCGI_CHILDREN=3
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /opt/phpfarm/inst/bin/php-cgi-5.4.30

对于我的特定站点(为***更改的站点),我在/etc/apache2/sites-enabled/****.conf:中有此配置

<VirtualHost *:80>
        ServerAdmin                 ...@...
        ServerName                  ****
        ServerAlias                 ****
        DocumentRoot                /var/www/****/public_html/
        ErrorLog                    /var/www/****/logs/error.log
        LogLevel                    warn
        CustomLog                   /var/www/****/logs/access.log combined
        <Directory />
                Options FollowSymLinks
                AllowOverride All
                AddHandler php-cgi .php
                Action php-cgi /cgi-bin-php/php-cgi-5.4.30
        </Directory>
</VirtualHost>

因此,当我运行我的站点的phpinfo()时,一切都很好,并且该站点使用PHP 5.4.30运行。

现在,我需要启用ZendGuardLoader扩展。我使用以下命令从这里下载64位linux版本:

cd ~
wget http://downloads.zend.com/guard/6.0.0/ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64.tar.gz
tar -xvf ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64.tar.gz
cd ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64
cd php-5.4.x
mv ZendGuardLoader.so /usr/lib/php5/ZendGuardLoader.so

因此,之后,为了安装PHP 5.4.30,我创建了文件custom-options-5.4.sh:

#!/bin/bash
#gcov='--enable-gcov'
configoptions="--disable-debug '
--enable-short-tags '
--with-pear '
--enable-bcmath '
--enable-calendar '
--enable-exif '
--enable-ftp '
--enable-mbstring '
--enable-pcntl '
--enable-soap '
--enable-sockets '
--enable-wddx '
--enable-zip '
--with-zlib '
--with-gettext '
--enable-pdo '
--with-pdo-mysql '
--enable-cgi '
--enable-json '
--with-curl '
--with-gd '
--enable-gd '
--with-openssl '
--enable-openssl '
--with-mysql '
--enable-mysql '
$gcov"

我还使用了一个自定义的php.ini文件作为custom-php.ini:

include_path=".:/opt/phpfarm/inst/php-$version/pear/php/"
[Zend]
zend_extension="/usr/lib/php5/ZendGuardLoader.so"

之后,为了编译PHP版本,我使用以下命令:

cd /opt/phpfarm/src/
./compile 5.4.30

因此,之后我立即得到了所有的输出,php也被正确安装,但当我在/opt/phpfarm/inst/bin/php-5.4.30 -v中检查php版本时,我得到了以下输出:

PHP 5.4.30 (cli) (built: Sep  3 2014 23:41:33)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

由于某些原因,它没有加载ZendGuard扩展。当我检查phpinfo()时,ZendGuard根本没有出现。当我检查/opt/phpfarm/inst/php-5.4.30/lib/php.ini时,zend_extension="/usr/lib/php5/ZendGuardLoader.so"线就在那里。

有什么想法吗?为什么它没有加载扩展,或者我如何启用它?

显然一切都很好,但由于某种原因,PHP没有读取PHP.ini文件,也没有反映出任何更改。我所做的是删除了inst/php-5.4.30文件夹和src/php-5.4.30文件夹,修改了custom-options-5.4.sh文件,并添加了以下行:

--with-config-file-path=/opt/phpfarm/inst/php-5.4.30/lib/ '

之后,我再次编译,重新启动apache2,一切正常。我希望这对其他人有用:)。

啊,还有,现在php -v的输出看起来是这样的:

PHP 5.4.30 (cli) (built: Sep 26 2014 16:13:45)
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

我必须使用--enable xdebug:进行配置

/configure--使用php config=/opt/phpfarm/inst/bin/php-config-54.4.16--启用xdebug