如何修复:警告:file_get_contents(http://www.domain.com/assets/magento_img/18540_01.jpg):
Posted
技术标签:
【中文标题】如何修复:警告:file_get_contents(http://www.domain.com/assets/magento_img/18540_01.jpg):【英文标题】:How to fix: Warning: file_get_contents(http://www.domain.com/assets/magento_img/18540_01.jpg): 【发布时间】:2016-01-09 23:19:38 【问题描述】:我们正在尝试通过 Dataflow 将一些产品导入 magento 高级配置文件并收到以下错误。我们搜索了高低,但找不到任何有关如何解决此问题的答案。我非常希望有人能够对此事有所了解。
请任何人帮忙解决这个问题,我们将不胜感激。
警告:file_get_contents(http://www.domain.com/assets/magento_img/18540_01.jpg):打开流失败:HTTP 请求失败! HTTP/1.1 404 Not Found in /var/www/vhosts/domain.com/httpdocs/app/code/local/Dataflow/Model/Convert/Handler/Image.php on line 64
这是我们正在使用的 xml 脚本。
<action type="dataflow/convert_adapter_io" method="load">
<var name="type">ftp</var>
<var name="host"><![CDATA[000.00.00.00]]></var>
<var name="passive">true</var>
<var name="user"><![CDATA[username]]></var>
<var name="password"><![CDATA[password]]></var>
<var name="path"><![CDATA[/]]></var>
<var name="filename"><![CDATA[feedname.csv]]></var>
<var name="format"><![CDATA[csv]]></var>
</action>
<action type="lanot_dataflow/convert_parser_csv" method="parse">
<var name="delimiter"><![CDATA[,]]></var>
<var name="enclose"><![CDATA[]]></var>
<var name="fieldnames">true</var>
<var name="_single_category_path">true</var>
<var name="map">
<map name="product_model"><![CDATA[sku]]></map>
<map name="product_name"><![CDATA[name]]></map>
<map name="product_description"><![CDATA[description]]></map>
<map name="product_retail_price"><![CDATA[price]]></map>
<map name="product_price"><![CDATA[cost]]></map>
<map name="product_quantity"><![CDATA[qty]]></map>
<map name="image_location"><![CDATA[image]]></map>
<map name="IPG_Cat_Desc_1"><![CDATA[category_ids]]></map>
<map name="IPG_Cat_Desc_2"><![CDATA[category_ids]]></map>
<map name="product_brand"><![CDATA[manufacturer]]></map>
<map name="product_barcode"><![CDATA[ean]]></map>
<map name="@type"><![CDATA[simple]]></map>
<map name="@attribute_set"><![CDATA[Default]]></map>
<map name="@visibility"><![CDATA[Catalog, Search]]></map>
<map name="@status"><![CDATA[Enabled]]></map>
<map name="@tax_class_id">Taxable Goods</map>
<map name="@websites">base</map>
<map name="@weight">0</map>
<map name="@short_description"><![CDATA[@description]]></map>
<map name="@thumbnail"><![CDATA[@image]]></map>
<map name="@small_image"><![CDATA[@image]]></map>
</var>
<var name="store"><![CDATA[0]]></var>
<var name="number_of_records">1</var>
<var name="decimal_separator"><![CDATA[.]]></var>
<var name="adapter"><![CDATA[catalog/convert_adapter_product]]></var>
<var name="method">parse</var>
</action>
【问题讨论】:
检查文件权限? 你能说得更具体一点,因为我对此很陌生。我应该检查文件夹权限吗?哪个文件夹或文件? 您的文件可以通过 url 访问吗? 是的,我们可以通过 ftp url 访问文件 我的意思是网址。喜欢https://example.com/images/a/jpg
。
【参考方案1】:
根据您的 cmets,此问题是由于图像不存在。所以我建议你先检查图像。你可以通过简单的检查来做到这一点。
$file = "http://www.domain.com/assets/magento_img/18540_01.jpg";
$file_headers = @get_headers($file);
if($file_headers[0] == 'HTTP/1.1 404 Not Found')
$exists = false;
else
$exists = true;
或者你可以试试
if (@getimagesize('http://www.domain.com/assets/magento_img/18540_01.jpg'))
// your code
更多信息file_exists。
【讨论】:
@Quentin :当我最近访问 SO 时,我找到了具有相同代码的答案。你也应该在那里发出警告,以防它不适用于 HTTP ***.com/questions/7991425/… 我将上面的代码放在哪里,即哪个文件和路径会很棒,我对magento很陌生。 在/var/www/vhosts/domain.com/httpdocs/app/code/local/Dataflow/Model/Convert/Handler/Image.php on line 64
上方检查一下
if (!file_put_contents($targetPath . DS . $info['basename'], file_get_contents($imageUrl))) return null;
if (@getimagesize('domain.com/assets/magento_img/18540_01.jpg')) // 你的代码 以上是关于如何修复:警告:file_get_contents(http://www.domain.com/assets/magento_img/18540_01.jpg):的主要内容,如果未能解决你的问题,请参考以下文章
file_get_contents() 如何修复错误“无法打开流”、“没有这样的文件”
如何处理 PHP 中 file_get_contents() 函数的警告?
访问 youtube api 时出错:“警告:file_get_contents() [function.file-get-contents]: URL > file-access is dis