欢迎来到PHP 的错误控制运算符的专制。我所说的暴政是指宏伟计划中的小烦恼。
所有这些控制台错误都是由异常驱动的。如果您在 中搜索 Magento Connect 源downloader
,您会发现异常文本
打开文件失败
只用在三个地方
$ ack 'Failed to open file'
lib/Mage/Archive/Helper/File/Bz.php
47: throw new Mage_Exception('Failed to open file ' . $this->_filePath);
lib/Mage/Archive/Helper/File/Gz.php
44: throw new Mage_Exception('Failed to open file ' . $this->_filePath);
lib/Mage/Archive/Helper/File.php
190: throw new Mage_Exception('Failed to open file ' . $this->_filePath);
如果您查看这些地方中的每一个,您会看到类似的模式
protected function _open($mode)
{
$this->_fileHandler = @bzopen($this->_filePath, $mode);
if (false === $this->_fileHandler) {
throw new Mage_Exception('Failed to open file ' . $this->_filePath);
}
}
protected function _open($mode)
{
$this->_fileHandler = @fopen($this->_filePath, $mode);
if (false === $this->_fileHandler) {
throw new Mage_Exception('Failed to open file ' . $this->_filePath);
}
}
protected function _open($mode)
{
$this->_fileHandler = @gzopen($this->_filePath, $mode);
if (false === $this->_fileHandler) {
throw new Mage_Exception('Failed to open file ' . $this->_filePath);
}
}
构建 Magento Connect 的开发人员使用该@
运算符来抑制从gzopen
、fopen
和bzopen
.
如果我遇到您的情况,我会临时编辑这些文件以@
从这些函数调用中删除运算符,然后检查我的错误日志/浏览器输出以了解 PHP 不想打开这些文件的原因。