You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac 10.9.5内置PHP服务器升级OpenSSL问题求助

解决Mac OSX Server上PHP升级后仍使用旧版OpenSSL的问题

咱们先拆解下你遇到的核心问题:系统全局的openssl已经是1.0.2n了,但Apache加载的PHP模块还绑定着旧版的OpenSSL 0.9.8zg——这是因为你升级的PHP要么没在编译时关联新版OpenSSL,要么Apache仍然在使用系统自带的mod_php模块,而非你新安装的PHP版本。

下面给你两种可行的解决思路,重点讲你提到的「安装独立Apache+PHP」的方案:

一、先确认问题根源

先执行这条命令,查看当前PHP的编译参数:

php -i | grep "Configure Command"

如果输出里没有--with-openssl参数,或者参数后的路径指向/usr/lib(系统自带OpenSSL的位置),那就是编译PHP时没关联新版OpenSSL导致的。

二、方案1:修复现有PHP的OpenSSL关联

如果不想换独立Apache,只需要重新编译PHP,指定新版OpenSSL的路径:

  1. 先确保你已经安装了新版OpenSSL(比如通过Homebrew安装的/usr/local/opt/openssl)
  2. 重新编译PHP时,加上以下参数:
    ./configure --with-openssl=/usr/local/opt/openssl [其他你需要的编译参数]
    make && make install
    
  3. 重启Apache,再看phpinfo()里的OpenSSL版本是否更新。

三、方案2:安装独立的Apache+PHP(推荐)

因为Mac OSX Server自带的Apache和PHP绑定很深,容易出现版本冲突,直接换成Homebrew管理的独立组件会更省心:

步骤1:安装Homebrew(Mac包管理工具)

如果还没装,执行这条命令:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装完成后,执行brew update确保包索引是最新的。

步骤2:安装新版OpenSSL

brew install openssl

安装后,按照brew的提示,把新版OpenSSL加入环境变量,让系统优先使用它:

echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile

执行openssl version确认版本是1.0.2n(或更高)。

步骤3:安装独立Apache

brew install httpd

这会安装Apache 2.4版本(比系统自带的2.2新很多)。安装完成后,brew会告诉你配置文件路径是/usr/local/etc/httpd/httpd.conf,启动命令是brew services start httpd。

步骤4:安装指定版本的PHP

如果你需要PHP 5.4,因为brew默认仓库已经移除了旧版本,需要先添加第三方tap:

brew tap exolnet/homebrew-deprecated
brew install php@5.4

安装时brew会自动关联新版OpenSSL,无需额外参数。安装完成后,查看PHP模块路径:

ls /usr/local/opt/php@5.4/lib/httpd/modules/

应该能看到libphp5.so文件。

步骤5:配置Apache加载新PHP模块

编辑/usr/local/etc/httpd/httpd.conf:

  1. 找到LoadModule部分,添加PHP模块的加载指令(路径替换成你刚才看到的):
    LoadModule php5_module /usr/local/opt/php@5.4/lib/httpd/modules/libphp5.so
    
  2. 找到AddHandler部分,添加PHP脚本处理:
    AddHandler php5-script .php
    
  3. 找到DirectoryIndex,把index.php加到最前面:
    DirectoryIndex index.php index.html
    
  4. 可选:修改DocumentRoot到你常用的网站目录,比如/Users/你的用户名/Sites,同时修改对应的<Directory>块的权限设置。

步骤6:禁用系统自带的Apache

因为Server.app可能会自动启动系统Apache,需要彻底禁用:

sudo apachectl stop
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

同时打开Server.app,关闭「Web服务」功能。

步骤7:验证结果

  1. 重启新安装的Apache:
    brew services restart httpd
    
  2. 在DocumentRoot目录下创建phpinfo.php文件,内容:
    <?php phpinfo(); ?>
    
  3. 访问http://localhost/phpinfo.php,查看OpenSSL版本,应该和openssl version的输出一致了。

额外注意事项

  • 如果你后续需要用Server.app的其他功能,确保它不会重新启用系统Apache,否则会和独立Apache冲突。
  • 用Homebrew安装的组件可以通过brew upgrade随时更新,比系统自带的维护更方便。

内容的提问来源于stack exchange,提问作者Henk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:33:16