我在本地计算机上使用 Ubuntu Linux 12.04 LTS。我很久以前就在我的机器上安装了 LAMP。现在我想启用以下 PHP 扩展:
首先我想检查这些 PHP 扩展是否启用。我搜索了很多关于如何检查已安装/启用的 PHP 扩展的信息,但每次我都找到了如何在 Ubuntu Linux 上安装这些扩展。那么有人可以告诉我如何检查 Ubuntu Linux 12.04 LTS 中启用/禁用的 PHP 扩展吗?
除了跑步
php -m
要获取已安装的 php modules 的列表,您可能会发现在 Ubuntu 中获取当前安装的 php packages 的列表很有帮助:
sudo dpkg --get-selections | grep -v deinstall | grep php
这很有帮助,因为 Ubuntu 通过 packages 提供 php modules。
然后,您可以通过从可用的 Ubuntu php packages 中进行选择来安装所需的 modules,您可以通过运行查看:
sudo apt-cache search php | grep "^php5-"
或者,对于 Ubuntu 16.04 及更高版本:
sudo apt-cache search php | grep "^php7"
正如您所提到的,有大量关于实际安装您可能需要的软件包的信息,因此我不会在这里详细介绍。
可能已安装的模块已被禁用。在这种情况下,运行时不会显示
php -m
,但会显示在已安装的 Ubuntu 软件包列表中。
可以通过
php5enmod
工具(在以后的发行版上为 phpenmod
)启用/禁用模块,该工具是 php-common
包的一部分。
Ubuntu 12.04:
启用的模块在
/etc/php5/conf.d
中进行符号链接
Ubuntu 12.04:(使用 PHP 5.4+)
要启用已安装的模块:
php5enmod <modulename>
要禁用已安装的模块:
php5dismod <modulename>
Ubuntu 16.04 (php7) 及更高版本:
要启用已安装的模块:
phpenmod <modulename>
要禁用已安装的模块:
phpdismod <modulename>
重新加载 Apache
启用/禁用后记得重新加载 Apache2:
service apache2 reload
要在脚本级别而不是 CLI 中检查此扩展是否启用,您可以创建一个 php 文件,即
info.php
并在其中编写以下代码:
<?php
echo "GD: ", extension_loaded('gd') ? 'OK' : 'MISSING', '<br>';
echo "XML: ", extension_loaded('xml') ? 'OK' : 'MISSING', '<br>';
echo "zip: ", extension_loaded('zip') ? 'OK' : 'MISSING', '<br>';
?>
就是这样。
您可以通过终端查看哪些模块(已编译)可用
php -m
查看(编译和)加载哪些扩展(不在 cli 中)的最简单方法可能是让服务器运行以下命令:
<?php
$ext = get_loaded_extensions();
asort($ext);
foreach ($ext as $ref) {
echo $ref . "\n";
}
PHP cli 不一定加载相同的扩展。
欲了解
php extensions
等信息,请在现场。
创建一个新文件并将其命名为
info.php
(或其他name.php
)在其中写入以下代码:
<?php
phpinfo ();
?>
将文件保存在网站的
root
(主页)example.com/info.php
您网站上的所有 php
信息都会显示。在
中搜索扩展名/etc/php5/apache2/php.ini
查看模块是否启用/禁用与仅安装或未安装的另一种快速方法是使用 phpquery 命令。
例如,在我的 Linux Mint 机器上,如果我想查看是否启用了 xdebug,我会运行:
phpquery -v 8.1 -s apache2 -m xdebug
-v - 指定您想要的版本
-s - 指定环境(apache2 或 cli)
-m - 您感兴趣的模块。
上述示例的响应是(就我而言):
xdebug (Enabled for apache2 by maintainer script)
这里还有一些例子。
在 PHP 8.1 上测试:
php -m
# set EXT value with the desired extension name.
EXT=gmp php -r "echo getenv('EXT'),': ', extension_loaded( getenv('EXT') ) ? 'Loaded' : 'Not loaded', PHP_EOL;"
echo "<?php phpinfo(); ?>" > public/info.php
然后访问
you-running-php-fpm-host/info.php
;记得之后删除该文件!