我用自定义的OpenSSL版本编译了Apache2 2.4.57,然后安装了php8.2。这是我在 localhost:8080 上本地使用的测试 Web 服务器。服务器使用 Apache 的测试页面。
Apache2安装在/usr/local/apache2下
我使用 sudo a2enmod php8.2 来启用 PHP。
我创建了一个test.php页面,复制到htdocs下:
<?php
phpinfo();
?>
测试 PHP 安装,但它不起作用。当我在 Chrome 中键入 localhost:8080/test.php 时,它只显示页面的代码。
我根本不是网络开发人员。我按照以下教程https://computingforgeeks.com/how-to-install-php-8-2-on-ubuntu/
在httpd.conf中还有什么要做的来启用PHP吗? 运行 sudo a2enmod php8.2 后,我在 httpd.conf 中看到没有修改是否正常?
我也尝试过使用 php8.2-fpm,但它也不起作用。 我只是计划使用 https 和我的自定义版本的 OpenSSL 将一个简单的视频流式传输到视频播放器 (ffplay)。
我以为 Apache+php 很容易安装,但似乎无法配置 :-(
有人可以帮忙吗? 谢谢
a2enmod
是 Debian / Ubuntu 专门为支持他们的 apache2
包而编写的命令工具。它不是支持自定义编译的 Apache2 的工具。要将 PHP 与它一起使用,您需要根据已编译的 Apache2 副本从源代码手动编译 PHP。
不推荐这样做,因为您必须手动修补和更新 Apache 以避免旧版本的漏洞被利用。
如果您不喜欢 PHP 版本,您应该尝试通过以下两种方式之一安装 PHP:
第一种方法应该更直接:
sudo apt install php libapache2-mod-php
sudo systemctl restart apache2
如果你的 Ubuntu 服务器上需要 PHP 8.2,但仍想使用普通的 Apache 包,那么你应该使用 PPA 安装 PHP 8.2:
LC_ALL=C.UTF-8 sudo add-apt-repository ppa:ondrej/php
sudo apt update -y
sudo apt install php8.2 libapache2-mod-php8.2 php8.2-mysql
sudo systemctl restart apache2
附言如果您需要并行运行多个 PHP 版本,PHP-FPM 非常灵活。但这会让你对你在做什么有更多的了解。
谢谢杨
我听从了你的建议,并设法用我的 Apache 版本编译了 php8.2。
我遵循了以下信息:https://gist.github.com/z2z/3bf4c60b7f0c0171d410d54bad088e6e
但是,我发现编译 PHP 后存在一些差异。出于我的目的,我不需要任何数据库,所以我删除了数据库依赖项。
我的apache安装在那里:/usr/local/apache2/ 我在那里有一个自定义版本的openssl:/usr/local/bin/openssl
Apache编译配置如下:
./configure --with-ssl=/usr/local/bin/openssl --with-expat=/usr/local/include --enable-so --enable-mime-magic
php8.5编译配置如下:
./configure --with-apxs2=/usr/local/apache2/bin/apxs --prefix=/usr/local/apache2/php --with-config-file-path=/usr/local/apache2/php --disable-cgi --with-zlib --with-gettext --without-pdo-sqlite --without-sqlite3
编译和安装:
make
sudo make install
安装需要运行(不知道为什么...):
/usr/local/apache2/build/libtool --finish /home/youruser/Desktop/apache/php-8.2.5/libs
Once compiled php8.2 creates the module: php_module for apache2.可以使用以下方法验证:
/usr/local/apache2/bin/httpd -M
它还在模块下创建库 libphp.so。
为了激活 php,我将以下内容添加到 httdp.conf
LoadModule php_module modules/libphp.so
<FilesMatch ".+\.ph(?:ar|p|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch ".+\.phps$">
SetHandler application/x-httpd-php-source
# Deny access to raw php sources by default
# To re-enable it's recommended to enable access to the files
# only in specific virtual host or directory
Require all denied
</FilesMatch>
# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(?:ar|p|ps|tml)$">
Require all denied
</FilesMatch>
# Running PHP scripts in user directories is disabled by default
#
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_flag engine Off
</Directory>
</IfModule>
然后我在htdocs中创建了一个php文件:
<?php
phpinfo();
?>
验证 PHP 是否有效!
幸运的是,只有当您需要使用带有 Apache2 自定义编译的 PHP 时,才需要所有这些!