我需要将 php 从 5.1.6 升级到 5.3.3(最新版本)。
问题是其他人安装了 5.1.6,而我没有任何关于它的文档。
因此,我首先检查的是 phpinfo。在配置部分的页面上,我发现了一些令我困惑的事情:
--without-mysql
mysql 已启用并且运行良好。如果编译时没有包含 mysql,那么如何启用 mysql,为什么?
此外,还有
--with-apxs2=/usr/sbin/apxs
我确定 /usr/sbin 目录中没有 apxs。
它是如何编译的?它是使用 yum 安装的吗?
提前谢谢!
更新:我将为您提供 phpinfo() 函数的完整配置部分:
'./configure' '--build=i686-redhat-linux-gnu' '--host=i686-redhat-linux-gnu' '--target=i386-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--disable-rpath' '--without-pear' '--with-bz2' '--with-curl' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-png' '--with-pspell' '--with-expat-dir=/usr' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-track-vars' '--enable-trans-sid' '--enable-yp' '--enable-wddx' '--with-kerberos' '--enable-ucd-snmp-hack' '--with-unixODBC=shared,/usr' '--enable-memory-limit' '--enable-shmop' '--enable-calendar' '--enable-dbx' '--enable-dio' '--with-mime-magic=/usr/share/file/magic.mime' '--without-sqlite' '--with-libxml-dir=/usr' '--with-xml' '--with-system-tzdata' '--with-apxs2=/usr/sbin/apxs' '--without-mysql' '--without-gd' '--without-odbc' '--disable-dom' '--disable-dba' '--without-unixODBC' '--disable-pdo' '--disable-xmlreader' '--disable-xmlwriter'
答案1
简短的回答 - 可以将 MySQL 和 PHP 等功能添加到核心编译程序中,或者像插件一样动态加载。
要检查它是否已通过 yum [或 RPM] 安装,请执行以下操作
rpm -qa | grep php*
yum list installed php
要查看您的 PHP 是静态编译的还是动态加载的,请检查/etc/httpd/conf/httpd.conf
文件中是否LoadModule
有一个带有文件名的指令,例如 php 以及 .so 扩展名 [可能libphp5.so
]。如果您看到这个,则您的安装是动态的。这意味着您可以在下面进行复制粘贴 [风险自负]。
PHP [和 Apache] 的扩展可以通过两种方式实现。一种方法是静态编译将它们编译成 PHP(也适用于 Apache)。当你静态地将它编译成 PHP(或 Apache)时,它编译后的代码的一部分。
另一种是通过我们所说的DSO [动态共享对象],在这种情况下像一个插件。
配置选项仅处理静态编译阶段. 许多主流特性像MySQL或PHP都可以被静态编译或者作为共享对象实现。
如果 PHP 是静态编译的,那么升级起来会有点复杂。您需要使用新 PHP 重新编译 Apache。
如果你想使用源代码编译来升级现有安装并且您的安装使用动态版本我相信这是默认的做事方法,也是最流行的。下载您想要的 PHP 版本。解压它,然后进入目录并复制粘贴您在上面放置的配置行并运行它。然后运行 make && make install。
wget [link to new PHP version]
tar -xvf [file downloaded above use the "ls" command if your not sure what it is]
cd [directory created again use "ls" if not sure]
[configure command from above goes here]
make && make install
这是一个可能的复制粘贴版本。未经测试。使用风险自负。
cd /tmp
wget http://us.php.net/get/php-5.3.3.tar.gz/from/this/mirror
tar -xvf php-5.3.3.tar.gz
cd php-5.3.3
./configure '--build=i686-redhat-linux-gnu' '--host=i686-redhat-linux-gnu' '--target=i386-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--disable-rpath' '--without-pear' '--with-bz2' '--with-curl' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-png' '--with-pspell' '--with-expat-dir=/usr' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-track-vars' '--enable-trans-sid' '--enable-yp' '--enable-wddx' '--with-kerberos' '--enable-ucd-snmp-hack' '--with-unixODBC=shared,/usr' '--enable-memory-limit' '--enable-shmop' '--enable-calendar' '--enable-dbx' '--enable-dio' '--with-mime-magic=/usr/share/file/magic.mime' '--without-sqlite' '--with-libxml-dir=/usr' '--with-xml' '--with-system-tzdata' '--with-apxs2=/usr/sbin/apxs' '--without-mysql' '--without-gd' '--without-odbc' '--disable-dom' '--disable-dba' '--without-unixODBC' '--disable-pdo' '--disable-xmlreader' '--disable-xmlwriter'
make && make install
有关 DSO 与静态链接的信息,请查看http://ez.no/developer/blog/php_as_dso_or_as_static_php_module。
差异基本上是内存和速度的权衡。
如果您保留上述不包含 mysql 的 PHP 编译,那么您将需要 php-mysql 包 [您很可能已经拥有该包。]
yum install php-mysql
答案2
如果您使用了包,则其功能可能与编译选项不完全匹配。
当这些模块被编译为共享库(--with-feature=/dir,shared)时,可能会发生这种情况