我刚刚设置了一台将托管 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
。