Linux - CentOS6 - PHP - 仅编译命令行

Linux - CentOS6 - PHP - 仅编译命令行

我刚刚设置了一台将托管 solr 守护程序的新服务器。目前 solr 索引为空,但我有一个 php 脚本可用于从 MySQL 存储中提取数据并填充 solr 索引以满足我的全文搜索要求。

所以我想知道,是否可以将 PHP 编译为仅命令行?为了让 PHP 工作而必须安装 apache 似乎很浪费。

- 编辑 -

再澄清一点。当我make install在 CentOS 上运行时,make 会尝试将 PHP 足迹添加到 /etc/httpd/conf。忽略这个可以吗?或者我是否可以传递一个标志来忽略 apache?

答案1

如果您必须在 Red Hat、CentOS 或其他 Red Hat 衍生产品上进行编译,我建议您使用 rpmbuild -bb(我稍后会解释)以及 Red Hat 或上游开发人员(PHP)在 php 源代码中提供的 .spec.in。以下是来自上游的示例:

%define version @VERSION@
%define so_version 5
%define release 0

Name: php
Summary: PHP: Hypertext Preprocessor
Group: Development/Languages
Version: %{version}
Release: %{release}
Copyright: The PHP license (see "LICENSE" file included in distribution)
Source: http://www.php.net/get/php-%{version}.tar.gz/from/a/mirror
Icon: php.gif
URL: http://www.php.net/
Packager: PHP Group <[email protected]>

BuildRoot: /var/tmp/php-%{version}

%description
PHP is an HTML-embedded scripting language. Much of its syntax is
borrowed from C, Java and Perl with a couple of unique PHP-specific
features thrown in. The goal of the language is to allow web
developers to write dynamically generated pages quickly.

%prep

%setup

%build
set -x
./buildconf
./configure --prefix=/usr --with-apxs \
    --disable-debug \
    --with-xml=shared \

# figure out configure options options based on what packages are installed
# to override, use the OVERRIDE_OPTIONS environment variable.  To add
# extra options, use the OPTIONS environment variable.

#test rpm -q MySQL-devel >&/dev/null && OPTIONS="$OPTIONS --with-mysql=shared"
#test rpm -q solid-devel >&/dev/null && OPTIONS="$OPTIONS --with-solid=shared,/home/solid"
#test rpm -q postgresql-devel >&/dev/null && OPTIONS="$OPTIONS --with-pgsql=shared"
test rpm -q expat >&/dev/null && OPTIONS="$OPTIONS --with-xml=shared"

if test "x$OVERRIDE_OPTIONS" = "x"; then
    ./configure --prefix=/usr --with-apxs=$APXS $OPTIONS
else
    ./configure $OVERRIDE_OPTIONS
fi

看到“--with-apxs”了吗?这是 Apache HTTP 服务器开发接口的一部分。如果没有安装,运行 configure 时您将得到以下信息(我相信这就是您所看到的):

Configuring SAPI modules
checking for AOLserver support... no
checking for Apache 1.x module support via DSO through APXS... 

Sorry, I was not able to successfully run APXS.  Possible reasons:

1.  Perl is not installed;
2.  Apache was not compiled with DSO support (--enable-module=so);
3.  'apxs' is not in your path.  Try to use --with-apxs=/path/to/apxs
The output of apxs follows
./configure: line 4092: apxs: command not found
configure: error: Aborting

如果要在不使用 apxs 支持的情况下进行编译(从而避免对 apache 的需求),您可以将其更改为:

--without-apxs

并且它将通过该点。

现在回到使用 spec 文件进行构建。如果您使用 spec 文件进行构建,rpmbuild 将告诉您需要哪些依赖项才能安装。然后,它将为您构建一个包,您可以使用以下命令安装它:

yum 本地安装 php.rpm

然后您就可以安装并满足其他要求。使用打包系统正确管理系统而不是尝试手动构建和安装,这将为您省去很多麻烦。

(或者您可以按照 embobo 的建议并只安装 php-cli ;))。

答案2

为什么要手动编译 php?安装php-cli而不是php(即 apache 模块) yum

相关内容