以下代码仅在我的终端中有效,但在我的本地主机 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);
我不知道是否需要更改任何内容才能使其发挥作用,但我需要一些建议。
您是否检查并比较了 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
文件中找到一些内容。