Solaris 特定的安装提示

本节包含在 Solaris 系统上安装 PHP 的具体说明和提示。

所需软件

Solaris 安装通常缺少 C 编译器及其相关工具。阅读 此常见问题解答,了解为什么其中一些工具需要使用 GNU 版本。

要解压 PHP 发行版,您需要

  • tar
  • gzip 或
  • bzip2

要编译 PHP,您需要

  • gcc(推荐,其他 C 编译器可能会起作用)
  • make
  • GNU sed

要构建额外的扩展或破解 PHP 代码,您可能还需要

  • re2c
  • bison
  • m4
  • autoconf
  • automake
此外,您需要安装(可能还需编译)任何特定于您配置的其他软件,例如 Oracle 或 MySQL。

使用软件包

您可以使用 pkgadd 来安装大多数所需的组件,从而简化 Solaris 安装过程。用于 Solaris 11 Express 的映像打包系统 (IPS) 也包含使用 pkg 命令安装所需的大多数组件。

添加备注

用户贡献的备注 17 个备注

Senny
8 年前
以下是在 Solaris 10 6/06 u2 SPARC 上成功安装 PHP 5.5.30 的步骤

设置 LD_LIBRARY_PATH、LD、CC 和 PATH 变量

root# LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/openwin/lib:/export/home/db/oracle/lib:/export/home/db/oracle/lib32
root# CC=gcc
root# LD=/usr/ccs/bin/ld
root# PATH=$PATH:/usr/ucb:/usr/local/bin/:/usr/sfw/bin/:/opt/csw/bin/:/usr/ccs/bin/
root# export LD_LIBRARY_PATH CC PATH LD

./configure --with-oci8=/export/home/db/oracle --with-apxs2=/usr/apache2/bin/apxs --with-config-file-path=/etc/apache2 --with-iodbc=/usr/local --enable-ftp --with-freetype-dir=/usr/local/freetype/ --with-sybase-ct=/usr/local/freetds/ --enable-opcache=no --without-pear

make
make test
make install
julie at baumler dot com
17 年前
http://meljr.com/~meljr/AMPSolaris10.html 上,Mel Lester Jr 针对 Solaris 10 提供了一个精彩的演练。

它甚至展示了如何在全局区域中安装 php 并在其他区域中配置它。
Louis at ewens dot com
23 年前
在 Solaris 上,如果您在启动 Apache 时收到类似以下错误

Syntax error on line 33 of /usr/local/apache/conf/httpd.conf
Cannot load /usr/local/apache/libexec/libphp4.so into server: ld.so.1: /usr/loca
l/apache/bin/httpd: fatal: libmysqlclient.so.10: open failed: No such file or directory
./apachectl start: httpd could not be started

..试试将以下行插入到 apachectl 启动 shell 脚本的配置部分

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/mysql/lib/mysql
export LD_LIBRARY_PATH

将 /usr/local/mysql/ 前缀更改为您 MySQL 安装所在的位置。请务必将 /lib/mysql 扩展添加到您的路径中。

执行正常的“apachectl start”命令以启动 Apache,瞧,没有错误了。Apachectl 可以从 Apache 安装的 bin 目录中找到。
m at hackerz dot uk dot co
21 年前
在添加了 Bison Flex autom e和 autoconf,将 /usr/local/bin 添加到路径,并将 /usr/ccs/bin/ar 链接到 /usr/local/bin/ar 之后,在 Solaris 9 上编译完成。
php at woodNO-SPAMstea dot com
22 年前
Howard Glynn 在 5 月 22 日发布的文章很正确 - 如果你正在运行 Solaris 8,请确保你获得了最新的推荐补丁集群。我一直在努力解决在启动 Apache 时出现的库问题已有数周,调整配置、设置 LD_LIBRARY_PATH 等。我无法相信 PHP 开发人员不会正确构建 Solaris - 这看起来像是一个相当重要的操作系统。但最新的 Solaris 补丁集群修复了该问题,所以我想这是我太久没有更新的错。我现在使用的是 PHP 4.2.1 和 Apache 2.0.36,运行良好。
howardglynn at hotmail dot com
22 年前
我在尝试在 Solaris 8 上进行 php / apache 共享库安装时遇到了很多关于“dn_skipname”引用错误的问题。所有编译都很简洁,但无法使用 mod_php 重新启动 apache。经过多次尝试和错误,我通过安装补丁 109326-07 找到了一个解决方案,其中包含一些用于解析器(我认为)的修复。我有一个没有安装补丁的 Web 服务器,一个安装了补丁,能够显示在其中一个服务器上编译、工作和重新启动的相同命令,而在另一个服务器上却不能。在机器上安装补丁,进行干净的编译,然后便能启动并运行。一切运行良好。从 sun.com 获取补丁
ozone at cname dot com
18 年前
php >= 5.1.1 需要 Solaris 上的完全 GNU 工具链;/usr/ccs/bin/ld 将无法进行链接。请参阅 bug 35496。
ineves at iportalmais dot pt
21 年前
我在 solaris 9、sparc 上编译了 php 4.2.3,它有效,我从 sunfreeware.org 那里获得了 gcc 3.2.2,我用以下命令编译它:

./configure --prefix=/opt/php --with-apxs=/opt/apache/bin/apxs --with-pgsql=/opt/pgsql --with-imap=/usr/src/soft/imap-2002b --with-ldap --with-imap-ssl=/usr/local/ssl

编译完成,但当我尝试运行它时,它显示类似下面的内容:

bash-2.05# /opt/apache/bin/apachectl start
在 /opt/apache/conf/httpd.conf 的第 205 行出现语法错误
无法在服务器中加载 /opt/apache/libexec/libphp4.so:ld.so.1: /opt/apache/bin/httpd: 致命错误:重新定位错误:文件 /opt/apache/libexec/libphp4.so:符号 ldap_start_tls_s:找不到引用的符号
/opt/apache/bin/apachectl start:无法启动 httpd

这意味着随 Solaris 提供的 ldap 库并不好,你应该从 openldap.org 软件包中使用...

它正在使用该库

bash-2.05# ldd /opt/apache/libexec/libphp4.so
...
libldap.so.5 => /usr/lib/libldap.so.5

这是一个来自 Solaris 安装的内容。

(我对我的英语表示歉意)
nicos at php dot net
21 年前
请注意,你还需要 GNU sed,否则会出现一些错误,如“输出行太长”。
ejflores at alcatel dot es
21 年前
./configure 无法正常使用 /usr/ucb/tr,你需要安装 GNU textutils
anacreo
19 年前
以下内容从 Sun 论坛复制——如果在 Solaris 10 上编译时遇到问题,请尝试此方法

Re:ctid_t 在哪里定义的?(Solaris 10)
作者:Juergen.Keil 2004 年 11 月 17 日上午 10:37(10 条回复中的第 1 条)
ctid_t 在 /usr/include/sys/types.h 中定义(“typedef id_t ctid_t;”)。

我想,发生的情况是你正在使用一个 gcc 编译器,它
是在 Solaris 9(或其他比
Solaris 10 b69 旧的 Solaris 版本)上构建的,并且该 gcc 版本有一组“固定的”gcc 特定的
标头,不再与你的 s10b69 系统标头匹配。

修复方法是构建一组新的 gcc “固定”标头

# cd /opt/sfw/gcc-3/lib/gcc-lib/i386-pc-solaris2.9/3.3.2/install-tools/

# cat > mkheaders.conf
SHELL=/bin/sh
SYSTEM_HEADER_DIR="/usr/include"
OTHER_FIXINCLUDES_DIRS=""
FIXPROTO_DEFINES="-D_XOPEN_SOURCE"
STMP_FIXPROTO="stmp-fixproto"
STMP_FIXINC="stmp-fixinc"
^D

# ./mkheaders
ltfrench at vt dot edu
22 年前
要在 Solaris 8 上构建 PHP 4.2.0 或更高版本(使用 gcc 和 gnu autoconf),你需要
ln -s /usr/local/bin/gcc /usr/local/bin/cc

请参阅:http://bugs.php.net/bug.php?id=16833
ariedederde
13 年前
在 Solaris Express 上安装 PHP

pkg search php
部分输出为,例如

pkg:/web/[email protected]

pkg install php-52

php 二进制文件安装在 /usr/php/5.2/bin/php 中
francois at tekwire dot net
17 年前
可在以下网址找到详细的指南文档,其中介绍了如何在 Solar 中构建 Apache 和 PHP:http://www.tekwire.net/redir.php/build_apa_php

本指南还介绍了如何从头开始构建他们可能依赖的每件软件,包括几乎每个 Apache 模块和 PHP 扩展:Apache 2.0、PHP V4 和 V5、zlib、OpenSSL、OpenLDAP、expat、iconv、mod_jk、xml2、xslt、png、jpeg、freetype、bzip2、curl、imap、MySQL、PostgreSQL、mm。

还包括一张清晰的依赖关系图,明确所有这些库之间的关系。
xlark at sdf dot lonestar dot org
21 年前
如果对 Solaris 进行“核心安装”,请确保已经安装了 SUNWlibm 和 SUNWlibms 软件包。否者,PHP 4.2.3 无法编译。

如果使用 GCC 获得了有关 math.h 的错误,则表示尚未安装这些错误。
shane dot kinsch at netracorp dot comNOSPAM
22 年前
PHP 4.1.1/Apache 1.32 构建问题 (Solaris 2.8)

Apache 构建选项
./configure --prefix=/usr/local/etc/apache --enable-module=rewrite --enable-shared=rewrite

PHP 构建选项
./configure --with-mysql=/usr/local/etc/mysql --with-apxs=/usr/local/etc/apache/bin/apxs

Apache 和 PHP 都在没有错误的情况下编译并干净安装。

启动 Apache 时出错
/usr/local/etc/apache/conf/httpd.conf 中的第 208 行语法错误
无法将 /usr/local/etc/apache/libexec/libphp4.so 载入服务器
ld.so.1: /usr/local/etc/apache/bin/httpd: 致命错误:重定位错误:文件 /usr/local/etc/apache/libexec/libphp4.so:符号 dn_skipname:未找到引用的符号 ./apachectl 无法启动:httpd 无法启动

httpd.conf 文件中的第 208 行为
LoadModule php4_module libexec/libphp4.so

解决方案
出于某种原因,即使已正确设置 LD_LIBRARY_PATH,
也没有完全读取它。您需要通过执行以下操作创建运行时
链接环境

#crle -c /var/ld/ld.config -l /usr/lib:/usr/local/lib:/usr/local/etc/mysql/lib

Shane Kinsch
NetraCorp LLC/SecurNET Consulting
AxL
18 年前
如果在 solaris 上使用 sqlite 构建 php 时遇到问题,请添加 "-lrt" 库,这样就不会收到 fdatasync 未定义符号的错误。
To Top