shell_exec 和 exec() 命令在我的本地主机 Ububtu 20.04 中的 Linux Ubuntu 上不起作用

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

以下代码仅在我的终端中有效,但在我的本地主机 xampp linux Unbuntu 20.04 中不起作用,shell_exec() 和 exec() 都不起作用。当我转到 localhot 时,它会执行所有代码,但不执行它的两个函数。以下代码不执行。

// Add the --enable-local-file-access option to enable access to local files (HTML)
$wkhtmltopdfCommand = "wkhtmltopdf --enable-local-file-access {$outputHtmlPath} {$pdfOutputPath}";
shell_exec($wkhtmltopdfCommand);

我不知道是否需要更改任何内容才能使其发挥作用,但我需要一些建议。

php shell localhost exec wkhtmltopdf
1个回答
0
投票

您是否检查并比较了 Web 和 CLI 之间的

php.ini
设置?

在您的脚本中,在开头添加以下内容:

phpinfo();
die();

运行您的页面并检查执行时应用的设置。你会 还可以查看读取和应用哪些

php.ini
文件。

问题是

shell_exec()
exec()
可能被禁用 出于安全原因。这可以通过编辑来更改 PHP 的 disable_functions 选项

INI 设置通常存储在特定的

*.ini
文件中
/etc/php/*
目录。所以你必须寻找一些设置 在那里。通常,如果您在 FPM 上运行 PHP 8.2,那么 你必须检查
/etc/php/8.2/fpm/php.ini

我的

/etc/php/8.2/cli/php.ini
文件已将
disable_functions
设置为 空字符串,意味着在命令行中没有限制。 但在我的 FPM 设置中,我有一个巨大的关键功能列表 禁用它们是为了降低我的服务器被黑客攻击的风险。

Apache配置还可以设置一些 PHP 设置, 仅适用于特定的虚拟主机。所以如果你不能的话看看它们 在

php.ini
文件中找到一些内容。

根据您的 PHP 设置,您可能还需要检查 安全模式Suhosin 如果您安装了此模块。

© www.soinside.com 2019 - 2024. All rights reserved.