Magento2 无法将产品添加到购物车 - "We can't add this item to your shopping cart right now" - tempnam() 问题

Magento2 Can't add products to cart - "We can't add this item to your shopping cart right now" - problem with tempnam()

当我想将任何产品(简单产品)添加到我的购物车时,按钮会显示一条成功消息,但是从主要消息中我得到:"We can't add this item to your shopping cart right now". 不管我选择哪个产品,我也试过了缓存刷新后隐身模式或重新加载。

我是 运行 新安装的 Magento 2.3.0 版本并且处于开发者模式。

从日志中我得到以下信息:

main.CRITICAL: Notice: tempnam(): file created in the system's temporary directory in /www/htdocs/[...]/[...]/vendor/magento/zendframework1/library/Zend/Cache/Backend.php on line 203 {"exception":"[object] (Exception(code: 0): Notice: tempnam(): file created in the system's temporary directory in /www/htdocs/[...]/[...]/vendor/magento/zendframework1/library/Zend/Cache/Backend.php on line 203 at /www/htdocs/[...]/[...]/vendor/magento/framework/App/ErrorHandler.php:61)"} []

从第 203 行开始,这是来自 Backend.php:

       $tempFile = tempnam(md5(uniqid(rand(), TRUE)), '');
    if ($tempFile) {
        $dir = realpath(dirname($tempFile));
        unlink($tempFile);
        if ($this->_isGoodTmpDir($dir)) {
            return $dir;
        }
    }

由于产品有现货,我希望它们能正确添加到购物车。

编辑

这是临时目录的问题。 请务必将 777 权限递归设置为 var/cache 目录。

但主要问题是 tmp 目录的设置。您必须编辑 php.ini 以显式设置 tmp 路径:

sys_temp_dir="/absolute/path/to/magento2/var/tmp"
session.save_path="/absolute/path/to/magento2/var/tmp"
session.cookie_path="/absolute/path/to/magento2/var/tmp"

或者,如果您无权访问 php.ini(就像我所做的那样,因为我的网站托管商不允许对其进行编辑),您可以像这样在您的 .htaccess 中进行更改(如果您的托管商支持 mod_env):

SetEnv TEMP /www/htdocs/your/path/mage/var/tmp
SetEnv TMP /www/htdocs/your/path/mage/var/tmp
SetEnv TMPDIR /www/htdocs/your/path/mage/var/tmp

另请参阅: