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
另请参阅:
- https://magento.stackexchange.com/a/233296/44064(编辑php.ini)
- https://magento.stackexchange.com/a/117520/44064 (.htaccess)
- (chmod var/cache)
- http://httpd.apache.org/docs/current/mod/mod_env.html (mod_env)
当我想将任何产品(简单产品)添加到我的购物车时,按钮会显示一条成功消息,但是从主要消息中我得到:"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
另请参阅:
- https://magento.stackexchange.com/a/233296/44064(编辑php.ini)
- https://magento.stackexchange.com/a/117520/44064 (.htaccess)
- (chmod var/cache)
- http://httpd.apache.org/docs/current/mod/mod_env.html (mod_env)