在.htaccess中切换到php8.2不起作用

问题描述 投票:0回答:1

我只是尝试从 php7.4 切换到 php8.2,如下更改 .httaccess:

DirectoryIndex index.php
AddHandler application/x-httpd-php82 .php
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>

我没有成功。这是

的输出
sudo update-alternatives --config php

enter image description here

.htaccess 存储在与 info.php 存储相同的文件夹中。为什么没有使用 php8.2 版本?我想根据用于不同子域的代码在不同的 php 版本之间切换。这是 info.php 的输出:

enter image description here

这是 Vhost 的提取:

<Directory /var/www/testshop.leitner-sales.at>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
php .htaccess version
1个回答
0
投票

首先,欢迎来到 Stack Overflow,很高兴你能更新,虽然有点晚了;P 你会喜欢 php ^8。

现在通常 php 可以通过多种方式运行,例如 CLI 和 GUI(服务器上下文)。在带有

apache
php
的库存安装中,用户请求将转发到 PHP 的
.so
文件。这个文件其实就是用C写的源码直接编译PHP的神器。

这就是说如果您还没有重新启动

apache
,可能找不到新编译的处理程序。

让我们深入挖掘一下。您将 apache 中的

handler
添加到
.htaccess
文件中,这是我从未见过的,但此处理程序定义(又名它指向的可执行文件)是在服务器配置中定义的。通常是
httpd.conf
。很多东西不能添加到
.htaccess
中,但必须在启动时加载,而不是调用时加载。当您在命令行中输入
php
时,您实际上使用的是与 apache 不同的可执行 php。因此你的
php-cli
vs
php-cgi

# In httpd.conf or a configuration file included by it
<IfModule mod_php7.c>
    AddHandler application/x-httpd-php74 .php
    Action application/x-httpd-php74 /cgi-bin/php74-cgi
</IfModule>

<IfModule mod_php8.c>
    AddHandler application/x-httpd-php80 .php
    Action application/x-httpd-php80 /cgi-bin/php80-cgi
</IfModule>
© www.soinside.com 2019 - 2024. All rights reserved.