2012-12-04 3 views
2

내가 이미지를 만들 수있는 Magento의 API를 사용하려고 해요로 이미지를 만들 수 있지만, 메시지젠토 API를

SoapFault exception: [104] Cannot create image. 

이 도움이 오류 메시지가 아닌 함께 실패하는 것 방법! 이것은 무엇을 의미 하는가? 왜이 일을하는거야? Magento API를 사용하여 이미지를 만드는 방법은 무엇입니까?

$client = new SoapClient($wsdlurl); 
$sessionId = $client->login($user, $key); 
$file = array(
    'content' => 
    base64_encode(file_get_contents($filename)), 
    'mime' => 'image/jpeg', 
    'name' => 'newfile.jpg' 
); 

$result = $client->call(
    $sessionId, 
    'catalog_product_attribute_media.create', 
    array(
     $productId, 
     array('file'=>$file, 'label'=>'new_test_label', 'position'=>'100', 'types'=>array('thumbnail'), 'exclude'=>0) 
    ) 
); 

내가 잘못 뭐하는 거지 :

이 내 코드?

답변

0

해결책을 찾았습니다. 이미지를 넣으려고하는 디렉토리 (.../media/catalog/product /)에 새 폴더를 만들 수있는 권한이 설정되지 않았습니다. 먼저, 파일 시스템 작업은 ./lib/Varien/Io/File.php에 의해 수행됩니다.이 파일 시스템에는 cd 용 자체 래퍼가 있습니다. mkdir, 등등. 실패 할 경우 정말 모호한 예외가 발생합니다.

디렉토리 생성 Mage_Catalog_Model_Product_Attribute_Backend_Media에서 발생했다 ->이 _ moveImageFromTmp ./app/code/core/Mage/Catalog/Model/Product/Attribute/Media/Api.php 에서 호출 된

모두를 처리하는 이미지 api 호출, 예 생성, 업데이트, 제거 등

그래서 같은 문제가 있고 권한 문제가 아니라면 ... 이제 디버그 코드를 어디에 둘 것인지 알고 있습니다.

오, 예, 오류 메시지를 출력하려면 에코 또는 죽을 수 없습니다. 예외를 throw해야합니다. Mage_Catalog_Model_Product_Attribute_Media_Api가 catch 한 다음 $ this -> _ fault를 호출하여 클라이언트에 보냅니다.

0

다른 관련 정보를 추가하고 싶습니다. 귀하의 의견에 Benbird에게 감사 드리며 매우 도움이되었습니다. API를 통해 이미지를 업로드 하려다가 "이미지를 만들 수 없습니다"라는 메시지가 나타납니다.

Magento에 깊이 들어가면 php.ini 파일에 메모리 제한이 -1 인 경우 이미지가 업로드되는 것을 방지한다는 것을 알았습니다. Magento 코어에는 이미지의 크기가 사용 가능한 메모리와 비교되는 이미지 (lib/Varien/Image/Adapter/Gd2.php 라인 57)가 처리되기 전에 확인이 이루어집니다. 무제한을 의미하는 -1 값을 고려하지 않고 "메모리 한도에 도달했습니다"예외를 던집니다.

이 문제를 해결하려면 memory_limit 값을 음수가 아닌 값으로 설정하십시오. 이 문제를 해결하려면 Magento 코드가 올바르게 처리해야합니다 (imagecreatefromjpeg가 catch 할 수없는 오류로 종료 된 다음 가능하지 않을 수도 있음).

행운을 빈다.