csv import - no success or error message, product not imported

Help for integrating the Laravel package
Forum rules
Always add your Laravel, Aimeos and PHP version as well as your environment (Linux/Mac/Win)
Spam and unrelated posts will be removed immediately!
columbo
Advanced
Posts: 124
Joined: 09 Oct 2019, 09:42

csv import - no success or error message, product not imported

Post by columbo » 15 Nov 2019, 19:18

Hi,

I try to import the product-import-example.csv from https://aimeos.org/docs/Developers/Cont ... s_from_CSV on Laravel 6
When I execute:

Code: Select all

php artisan aimeos:jobs product/import/csv 
I receive only:

Code: Select all

Executing the Aimeos jobs for "default"
no futher success or error message, also table madmin_log does not contain any new entries and the products are not imported. I tried several locations, with relativ and absolute path.

I'm sure it is a stupid mistake, but I can not find it. I have no idea what I'm doing wrong.

Thank you!

User avatar
aimeos
Administrator
Posts: 7884
Joined: 01 Jan 1970, 00:00

Re: csv import - no success or error message, product not imported

Post by aimeos » 16 Nov 2019, 16:21

Pretty sure your container type is different, e.g. default is "Zip" and you've configured a directory for the location:
https://aimeos.org/docs/Developers/Cont ... and_format
Professional support and custom implementation are available at Aimeos.com
If you like Aimeos, Image give us a star

columbo
Advanced
Posts: 124
Joined: 09 Oct 2019, 09:42

Re: csv import - no success or error message, product not imported

Post by columbo » 17 Nov 2019, 11:01

thanks
I updated my shop.php with 'type' and 'content' but still facing the same issue:
"Executing the Aimeos jobs for "default"" -> but products are not imported

here my shop.php

Code: Select all

'controller' => [
		'jobs' => [
		  	'product' => [
				'import' => [
			  		'csv' => [
						'location' => 'http://xxx.xxx.xxx.xxx/tmp/',
						'container' => [
							'type' => 'Directory',
							'content' => 'CSV',
						],
					],
					'mapping' => [
						'item' => [
							0 => 'product.code', // e.g. unique EAN code		
							1 => 'product.label', // UTF-8 encoded text, also used as product name		
							2 => 'product.type', // type of the product, e.g. "default" or "selection"		
							3 => 'product.status', // enabled (1) or disabled (0)		
						],
						....
						'catalog' => [
							19 => 'catalog.code', // e.g. Unique category code		
							20 => 'catalog.lists.type', // e.g. "promotion" for top seller products		
						],
					],
				],
			],
		],
	],
	

User avatar
aimeos
Administrator
Posts: 7884
Joined: 01 Jan 1970, 00:00

Re: csv import - no success or error message, product not imported

Post by aimeos » 17 Nov 2019, 11:51

Don't know if a remote HTTP location will work due to server restrictions but e.g. a FTP server would.
Please download the files first and try from a local directory instead.
Professional support and custom implementation are available at Aimeos.com
If you like Aimeos, Image give us a star

columbo
Advanced
Posts: 124
Joined: 09 Oct 2019, 09:42

Re: csv import - no success or error message, product not imported

Post by columbo » 18 Nov 2019, 20:28

thank you, now I receive a reply, but an error:

Code: Select all

Number of apostrophes don't match:
	SELECT DISTINCT
		mpro."id" AS "product.id", mpro."siteid" AS "product.siteid",
		mpro."type" AS "product.type", mpro."code" AS "product.code",
		mpro."label" AS "product.label", mpro."config" AS "product.config",
		mpro."start" AS "product.datestart", mpro."end" AS "product.dateend",
		mpro."status" AS "product.status", mpro."ctime" AS "product.ctime",
		mpro."mtime" AS "product.mtime", mpro."editor" AS "product.editor",
		mpro."target" AS "product.target", mpro."dataset" AS "product.dataset"
	FROM "mshop_product" AS mpro
	WHERE ( mpro."siteid" IN (1) AND mpro."code" IN ....
my new shop.php

Code: Select all

'controller' => [
		'jobs' => [
		  	'product' => [
				'import' => [
			  		'csv' => [
						'location' => '/tmp',
						'container' => [
							'type' => 'Directory',
							'content' => 'CSV',
						],
						'skip-lines' => 1,
					],
					'mapping' => [
						'item' => [
							...
						],
					],
				],
			],
		],
	],

User avatar
aimeos
Administrator
Posts: 7884
Joined: 01 Jan 1970, 00:00

Re: csv import - no success or error message, product not imported

Post by aimeos » 18 Nov 2019, 20:33

Can you please post the complete SQL statement and maybe the stack trace?
Professional support and custom implementation are available at Aimeos.com
If you like Aimeos, Image give us a star

columbo
Advanced
Posts: 124
Joined: 09 Oct 2019, 09:42

Re: csv import - no success or error message, product not imported

Post by columbo » 18 Nov 2019, 21:15

here the sql statement and the error:

Code: Select all

root@webserver2019:/document_root/shop# php artisan aimeos:jobs "product/import/csv"
Executing the Aimeos jobs for "default"
Number of apostrophes don't match:
                                        SELECT DISTINCT
                                                mpro."id" AS "product.id", mpro."siteid" AS "product.siteid",
                                                mpro."type" AS "product.type", mpro."code" AS "product.code",
                                                mpro."label" AS "product.label", mpro."config" AS "product.config",
                                                mpro."start" AS "product.datestart", mpro."end" AS "product.dateend",
                                                mpro."status" AS "product.status", mpro."ctime" AS "product.ctime",
                                                mpro."mtime" AS "product.mtime", mpro."editor" AS "product.editor",
                                                mpro."target" AS "product.target", mpro."dataset" AS "product.dataset"
                                        FROM "mshop_product" AS mpro

                                        WHERE ( mpro."siteid" IN (1) AND mpro."code" IN ('/*',' * This file is part of Composer.',' *',' * (c) Nils Adermann <naderman@naderman.de>',' *     Jordi Boggiano <j.boggiano@seld.be>',' * For the full copyright and license information',' * file that was distributed with this source code.',' */','setupEnvironment();','process(is_array($argv) ? $argv : array());','/**',' * Ensures the environment is sane','function setupEnvironment()','{','    ini_set(''display_errors''','}',' * processes the installer','function process($argv)','    // Determine ANSI output from --ansi and --no-ansi flags','    setUseAnsi($argv);','    if (in_array(''--help''','        displayHelp();','        exit(0);','    }','    $check      = in_array(''--check''','    $help       = in_array(''--help''','    $force      = in_array(''--force''','    $quiet      = in_array(''--quiet''','    $channel    = in_array(''--snapshot''','    $disableTls = in_array(''--disable-tls''','    $installDir = getOptValue(''--install-dir''','    $version    = getOptValue(''--version''','    $filename   = getOptValue(''--filename''','    $cafile     = getOptValue(''--cafile''','    if (!checkParams($installDir','        exit(1);','    $ok = checkPlatform($warnings','    if ($check) {','        // Only show warnings if we haven''t output any errors','        if ($ok) {','            showWarnings($warnings);','            showSecurityWarning($disableTls);','        }','        exit($ok ? 0 : 1);','    if ($ok || $force) {','        $installer = new Installer($quiet','        if ($installer->run($version','            exit(0);','    exit(1);',' * displays the help','function displayHelp()','    echo <<<EOF','Composer Installer','------------------','Options','--help               this help','--check              for checking environment only','--force              forces the installation','--ansi               force ANSI color output','--no-ansi            disable ANSI color output','--quiet              do not output unimportant messages','--install-dir="..."  accepts a target installation directory','--preview            install the latest version from the preview (alpha/beta/rc) channel instead of stable','--snapshot           install the latest version from the snapshot (dev builds) channel instead of stable','--version="..."      accepts a specific version to install instead of the latest','--filename="..."     accepts a target filename (default: composer.phar)','--disable-tls        disable SSL/TLS security for file downloads','--cafile="..."       accepts a path to a Certificate Authority (CA) certificate file for SSL/TLS verification','EOF;',' * Sets the USE_ANSI define for colorizing output',' * @param array $argv Command-line arguments','function setUseAnsi($argv)','    // --no-ansi wins over --ansi','    if (in_array(''--no-ansi''','        define(''USE_ANSI''','    } elseif (in_array(''--ansi''','    } else {','        // On Windows','        // Everywhere else','        define(','            ''USE_ANSI''','            (DIRECTORY_SEPARATOR == ''\\'')','                ? (false !== getenv(''ANSICON'') || ''ON'' === getenv(''ConEmuANSI''))','                : (function_exists(''posix_isatty'') && posix_isatty(1))','        );',' * Returns the value of a command-line option',' * @param string $opt The command-line option to check',' * @param mixed $default Default value to be returned',' * @return mixed The command-line value or the default','function getOptValue($opt','    $optLength = strlen($opt);','    foreach ($argv as $key => $value) {','        $next = $key + 1;','        if (0 === strpos($value','            if ($optLength === strlen($value) && isset($argv[$next])) {','                return trim($argv[$next]);','            } else {','                return trim(substr($value','            }','    return $default;',' * Checks that user-supplied params are valid',' * @param mixed $installDir The required istallation directory',' * @param mixed $version The required composer version to install',' * @param mixed $cafile Certificate Authority file',' * @return bool True if the supplied params are okay','function checkParams($installDir','    $result = true;','    if (false !== $installDir && !is_dir($installDir)) {','        out("The defined install dir ({$installDir}) does not exist."','        $result = false;','    if (false !== $version && 1 !== preg_match(''/^\d+\.\d+\.\d+(\-(alpha|beta|RC)\d*)*$/''','        out("The defined install version ({$version}) does not match release pattern."','    if (false !== $cafile && (!file_exists($cafile) || !is_readable($cafile))) {','        out("The defined Certificate Authority (CA) cert file ({$cafile}) does not exist or is not readable."','    return $result;',' * Checks the platform for possible issues running Composer',' * Errors are written to the output',' * @param array $warnings Populated by method',' * @param bool $quiet Quiet mode',' * @param bool $disableTls Bypass tls',' * @param bool $install If we are installing',' * @return bool True if there are no errors','function checkPlatform(&$warnings','    getPlatformIssues($errors','    // Make openssl warning an error if tls has not been specifically disabled','    if (isset($warnings[''openssl'']) && !$disableTls) {','        $errors[''openssl''] = $warnings[''openssl''];','        unset($warnings[''openssl'']);','    if (!empty($errors)) {','        out(''Some settings on your machine make Composer unable to work properly.''','        out(''Make sure that you fix the issues listed below and run this script again:''','        outputIssues($errors);','        return false;','    if (empty($warnings) && !$quiet) {','        out(''All settings correct for using Composer''','    return true;',' * Checks platform configuration for common incompatibility issues',' * @param array $errors Populated by method',' * @return bool If any errors or warnings have been found','function getPlatformIssues(&$errors','    $errors = array();','    $warnings = array();','    if ($iniPath = php_ini_loaded_file()) {','        $iniMessage = PHP_EOL.''The php.ini used by your command-line PHP is: '' . $iniPath;','        $iniMessage = PHP_EOL.''A php.ini file does not exist. You will have to create one.'';','    $iniMessage .= PHP_EOL.''If you can not modify the ini file','    if (ini_get(''detect_unicode'')) {','        $errors[''unicode''] = array(','            ''The detect_unicode setting must be disabled.''','            ''Add the following to the end of your `php.ini`:''','            ''    detect_unicode = Off''','            $iniMessage','    if (extension_loaded(''suhosin'')) {','        $suhosin = ini_get(''suhosin.executor.include.whitelist'');','        $suhosinBlacklist = ini_get(''suhosin.executor.include.blacklist'');','        if (false === stripos($suhosin','            $errors[''suhosin''] = array(','                ''The suhosin.executor.include.whitelist setting is incorrect.''','                ''Add the following to the end of your `php.ini` or suhosin.ini (Example path [for Debian]: /etc/php5/cli/conf.d/suhosin.ini):''','                ''    suhosin.executor.include.whitelist = phar ''.$suhosin','                $iniMessage','            );','    if (!function_exists(''json_decode'')) {','        $errors[''json''] = array(','            ''The json extension is missing.''','            ''Install it or recompile php without --disable-json''','    if (!extension_loaded(''Phar'')) {','        $errors[''phar''] = array(','            ''The phar extension is missing.''','            ''Install it or recompile php without --disable-phar''','    if (!extension_loaded(''filter'')) {','        $errors[''filter''] = array(','            ''The filter extension is missing.''','            ''Install it or recompile php without --disable-filter''','    if (!extension_loaded(''hash'')) {','        $errors[''hash''] = array(','            ''The hash extension is missing.''','            ''Install it or recompile php without --disable-hash''','    if (!extension_loaded(''iconv'') && !extension_loaded(''mbstring'')) {','        $errors[''iconv_mbstring''] = array(','            ''The iconv OR mbstring extension is required and both are missing.''','            ''Install either of them or recompile php without --disable-iconv''','    if (!ini_get(''allow_url_fopen'')) {','        $errors[''allow_url_fopen''] = array(','            ''The allow_url_fopen setting is incorrect.''','            ''    allow_url_fopen = On''','    if (extension_loaded(''ionCube Loader'') && ioncube_loader_iversion() < 40009) {','        $ioncube = ioncube_loader_version();','        $errors[''ioncube''] = array(','            ''Your ionCube Loader extension (''.$ioncube.'') is incompatible with Phar files.''','            ''Upgrade to ionCube 4.0.9 or higher or remove this line (path may be different) from your `php.ini` to disable it:''','            ''    zend_extension = /usr/lib/php5/20090626+lfs/ioncube_loader_lin_5.3.so''','    if (version_compare(PHP_VERSION','        $errors[''php''] = array(','            ''Your PHP (''.PHP_VERSION.'') is too old','        $warnings[''php''] = array(','            ''Your PHP (''.PHP_VERSION.'') is quite old','            ''Composer works with 5.3.2+ for most people','    if (!extension_loaded(''openssl'')) {','        $warnings[''openssl''] = array(','            ''The openssl extension is missing','            ''If possible you should enable it or recompile php with --with-openssl''','    if (extension_loaded(''openssl'') && OPENSSL_VERSION_NUMBER < 0x1000100f) {','        // Attempt to parse version number out','        $opensslVersion = trim(strstr(OPENSSL_VERSION_TEXT','        $opensslVersion = substr($opensslVersion','        $opensslVersion = $opensslVersion ? $opensslVersion : OPENSSL_VERSION_TEXT;','        $warnings[''openssl_version''] = array(','            ''The OpenSSL library (''.$opensslVersion.'') used by PHP does not support TLSv1.2 or TLSv1.1.''','            ''If possible you should upgrade OpenSSL to version 1.0.1 or above.''','    if (!defined(''HHVM_VERSION'') && !extension_loaded(''apcu'') && ini_get(''apc.enable_cli'')) {','        $warnings[''apc_cli''] = array(','            ''The apc.enable_cli setting is incorrect.''','            ''    apc.enable_cli = Off''','    if (!$install && extension_loaded(''xdebug'')) {','        $warnings[''xdebug_loaded''] = array(','            ''The xdebug extension is loaded','            ''Disabling it when using Composer is recommended.''','        if (ini_get(''xdebug.profiler_enabled'')) {','            $warnings[''xdebug_profile''] = array(','                ''The xdebug.profiler_enabled setting is enabled','                ''Add the following to the end of your `php.ini` to disable it:''','                ''    xdebug.profiler_enabled = 0''','    if (!extension_loaded(''zlib'')) {','        $warnings[''zlib''] = array(','            ''The zlib extension is not loaded','            ''If possible','    ob_start();','    phpinfo(INFO_GENERAL);','    $phpinfo = ob_get_clean();','    if (preg_match(''{Configure Command(?: *</td><td class="v">| *=> *)(.*?)(?:</td>|$)}m''','        $configure = $match[1];','        if (false !== strpos($configure','            $warnings[''sigchild''] = array(','                ''PHP was compiled with --enable-sigchild which can cause issues on some platforms.''','                ''Recompile it without this flag if possible','                ''    https://bugs.php.net/bug.php?id=22999''','            $warnings[''curlwrappers''] = array(','                ''PHP was compiled with --with-curlwrappers which will cause issues with HTTP authentication and GitHub.''','                ''Recompile it without this flag if possible''','    // Stringify the message arrays','    foreach ($errors as $key => $value) {','        $errors[$key] = PHP_EOL.implode(PHP_EOL','    foreach ($warnings as $key => $value) {','        $warnings[$key] = PHP_EOL.implode(PHP_EOL','    return !empty($errors) || !empty($warnings);',' * Outputs an array of issues',' * @param array $issues','function outputIssues($issues)','    foreach ($issues as $issue) {','        out($issue','    out('''');',' * Outputs any warnings found',' * @param array $warnings','function showWarnings($warnings)','    if (!empty($warnings)) {','        out(''Some settings on your machine may cause stability issues with Composer.''','        out(''If you encounter issues','        outputIssues($warnings);',' * Outputs an end of process warning if tls has been bypassed','function showSecurityWarning($disableTls)','    if ($disableTls) {','        out(''You have instructed the Installer not to enforce SSL/TLS security on remote HTTPS requests.''','        out(''This will leave all downloads during installation vulnerable to Man-In-The-Middle (MITM) attacks''',' * colorize output','function out($text','    $styles = array(','        ''success'' => "\033[0;32m%s\033[0m"','        ''error'' => "\033[31;31m%s\033[0m"','        ''info'' => "\033[33;33m%s\033[0m"','    );','    $format = ''%s'';','    if (isset($styles[$color]) && USE_ANSI) {','        $format = $styles[$color];','    if ($newLine) {','        $format .= PHP_EOL;','    printf($format',' * Returns the system-dependent Composer home location',' * @return string','function getHomeDir()','    $home = getenv(''COMPOSER_HOME'');','    if (!$home) {','        $userDir = getUserDir();','        if (defined(''PHP_WINDOWS_VERSION_MAJOR'')) {','            $home = $userDir.''/Composer'';','        } else {','            $home = $userDir.''/.composer'';','            if (!is_dir($home) && useXdg()) {','                // XDG Base Directory Specifications','                if (!($xdgConfig = getenv(''XDG_CONFIG_HOME''))) {','                    $xdgConfig = $userDir.''/.config'';','                }','                $home = $xdgConfig.''/composer'';','    return $home;',' * Returns the location of the user directory from the environment',' * @throws RuntimeException If the environment value does not exists','function getUserDir()','    $userEnv = defined(''PHP_WINDOWS_VERSION_MAJOR'') ? ''APPDATA'' : ''HOME'';','    $userDir = getenv($userEnv);','    if (!$userDir) {','        throw new RuntimeException(''The ''.$userEnv.'' or COMPOSER_HOME environment variable must be set for composer to run correctly'');','    return rtrim(strtr($userDir',' * @return bool','function useXdg()','    foreach (array_keys($_SERVER) as $key) {','        if (substr($key','            return true;','    return false;','function validateCaFile($contents)','    // assume the CA is valid if php is vulnerable to','    // https://www.sektioneins.de/advisories/advisory-012013-php-openssl_x509_parse-memory-corruption-vulnerability.html','    if (','        PHP_VERSION_ID <= 50327','        || (PHP_VERSION_ID >= 50400 && PHP_VERSION_ID < 50422)','        || (PHP_VERSION_ID >= 50500 && PHP_VERSION_ID < 50506)','    ) {','        return !empty($contents);','    return (bool) openssl_x509_parse($contents);','class Installer','    private $quiet;','    private $disableTls;','    private $cafile;','    private $installPath;','    private $target;','    private $tmpFile;','    private $baseUrl;','    private $algo;','    private $errHandler;','    private $httpClient;','    private $pubKeys = array();','    private $installs = array();','    /**','     * Constructor - must not do anything that throws an exception','     *','     * @param bool $quiet Quiet mode','     * @param bool $disableTls Bypass tls','     * @param mixed $cafile Path to CA bundle','     */','    public function __construct($quiet','    {','        if (($this->quiet = $quiet)) {','            ob_start();','        $this->disableTls = $disableTls;','        $this->cafile = $caFile;','        $this->errHandler = new ErrorHandler();','     * Runs the installer','     * @param mixed $version Specific version to install','     * @param mixed $installDir Specific installation directory','     * @param string $filename Specific filename to save to','     * @param string $channel Specific version channel to use','     * @throws Exception If anything other than a RuntimeException is caught','     * @return bool If the installation succeeded','    public function run($version','        try {','            $this->initTargets($installDir','            $this->initTls();','            $this->httpClient = new HttpClient($this->disableTls','            $result = $this->install($version','            if ($result && $channel !== ''stable'' && !$version && defined(''PHP_BINARY'')) {','                $null = (defined(''PHP_WINDOWS_VERSION_MAJOR'') ? ''NUL'' : ''/dev/null'');','                @exec(escapeshellarg(PHP_BINARY) .'' ''.escapeshellarg($this->target).'' self-update --''.$channel.'' --set-channel-only -q > ''.$null.'' 2> ''.$null','        } catch (Exception $e) {','            $result = false;','        // Always clean up','        $this->cleanUp($result);','        if (isset($e)) {','            // Rethrow anything that is not a RuntimeException','            if (!$e instanceof RuntimeException) {','                throw $e;','            out($e->getMessage()','        return $result;','     * Initialization methods to set the required filenames and composer url','     * @throws RuntimeException If the installation directory is not writable','    protected function initTargets($installDir','        $this->installPath = (is_dir($installDir) ? rtrim($installDir','        $installDir = realpath($installDir) ? realpath($installDir) : getcwd();','        if (!is_writeable($installDir)) {','            throw new RuntimeException(''The installation directory "''.$installDir.''" is not writable'');','        $this->target = $installDir.DIRECTORY_SEPARATOR.$filename;','        $this->tmpFile = $installDir.DIRECTORY_SEPARATOR.basename($this->target','        $uriScheme = $this->disableTls ? ''http'' : ''https'';','        $this->baseUrl = $uriScheme.''://getcomposer.org'';','     * A wrapper around methods to check tls and write public keys','     * @throws RuntimeException If SHA384 is not supported','    protected function initTls()','        if ($this->disableTls) {','            return;','        if (!in_array(''sha384''','            throw new RuntimeException(''SHA384 is not supported by your openssl extension'');','        $this->algo = defined(''OPENSSL_ALGO_SHA384'') ? OPENSSL_ALGO_SHA384 : ''SHA384'';','        $home = $this->getComposerHome();','        $this->pubKeys = array(','            ''dev'' => $this->installKey(self::getPKDev()','            ''tags'' => $this->installKey(self::getPKTags()','        if (empty($this->cafile) && !HttpClient::getSystemCaRootBundlePath()) {','            $this->cafile = $this->installKey(HttpClient::getPackagedCaFile()','     * Returns the Composer home directory','     * @throws RuntimeException If the directory cannot be created','     * @return string','    protected function getComposerHome()','        $home = getHomeDir();','        if (!is_dir($home)) {','            $this->errHandler->start();','            if (!mkdir($home','                throw new RuntimeException(sprintf(','                    ''Unable to create Composer home directory "%s": %s''','                    $home','                    $this->errHandler->message','                ));','            $this->installs[] = $home;','            $this->errHandler->stop();','        return $home;','     * Writes public key data to disc','     * @param string $data The public key(s) in pem format','     * @param string $path The directory to write to','     * @param string $filename The name of the file','     * @throws RuntimeException If the file cannot be written','     * @return string The path to the saved data','    protected function installKey($data','        $this->errHandler->start();','        $target = $path.DIRECTORY_SEPARATOR.$filename;','        $installed = file_exists($target);','        $write = file_put_contents($target','        @chmod($target','        $this->errHandler->stop();','        if (!$write) {','            throw new RuntimeException(sprintf(''Unable to write %s to: %s''','        if (!$installed) {','            $this->installs[] = $target;','        return $target;','     * The main install function','     * @param string $channel Version channel to use','    protected function install($version','        $retries = 3;','        $infoMsg = ''Downloading...'';','        $infoType = ''info'';','        while ($retries--) {','            if (!$this->quiet) {','                out($infoMsg','                $infoMsg = ''Retrying...'';','                $infoType = ''error'';','            if (!$this->getVersion($channel','                out($error','                continue;','            if (!$this->downloadToTmp($url','            if (!$this->verifyAndSave($version','            $result = true;','            break;','        if (!$this->quiet) {','            if ($result) {','                out(PHP_EOL."Composer (version {$version}) successfully installed to: {$this->target}"','                out("Use it: php {$this->installPath}"','                out('''');','                out(''The download failed repeatedly','     * Sets the version url','     * @param false|string $version Version to install','     * @param null|string $url The versioned url','     * @param null|string $error Set by method on failure','     * @return bool If the operation succeeded','    protected function getVersion($channel','        $error = '''';','        if ($version) {','            if (empty($url)) {','                $url = $this->baseUrl."/download/{$version}/composer.phar";','        if ($this->downloadVersionData($data','            $this->parseVersionData($data','        return empty($error);','     * Downloads and json-decodes version data','     * @param null|array $data Downloaded version data','    protected function downloadVersionData(&$data','        $url = $this->baseUrl.''/versions'';','        $errFmt = ''The "%s" file could not be %s: %s'';','        if (!$json = $this->httpClient->get($url)) {','            $error = sprintf($errFmt','            return false;','        if (!$data = json_decode($json','        return true;','     * A wrapper around the methods needed to download and save the phar','     * @param string $url The versioned download url','     * @param null|string $signature Set by method on successful download','    protected function downloadToTmp($url','        $errFmt = ''The "%s" file could not be downloaded: %s'';','        $sigUrl = $url.''.sig'';','        if (!$fh = fopen($this->tmpFile','            $error = sprintf(''Could not create file "%s": %s''','        } elseif (!$this->getSignature($sigUrl','        } elseif (!fwrite($fh','        if (is_resource($fh)) {','            fclose($fh);','     * Verifies the downloaded file and saves it to the target location','     * @param string $version The composer version downloaded','     * @param string $signature The digital signature to check','    protected function verifyAndSave($version','        if (!$this->validatePhar($this->tmpFile','            $error = ''The download is corrupt: ''.$pharError;','        } elseif (!$this->verifySignature($version','            $error = ''Signature mismatch','            if (!rename($this->tmpFile','                $error = sprintf(''Could not write to file "%s": %s''','            chmod($this->target','     * Parses an array of version data to match the required channel','     * @param array $data Downloaded version data','     * @param mixed $channel Version channel to use','     * @param false|string $version Set by method','     * @param mixed $url The versioned url','    protected function parseVersionData(array $data','        foreach ($data[$channel] as $candidate) {','            if ($candidate[''min-php''] <= PHP_VERSION_ID) {','                $version = $candidate[''version''];','                $url = $this->baseUrl.$candidate[''path''];','                break;','        if (!$version) {','            $error = sprintf(','                ''None of the %d %s version(s) of Composer matches your PHP version (%s / ID: %d)''','                count($data[$channel])','                $channel','                PHP_VERSION','                PHP_VERSION_ID','            throw new RuntimeException($error);','     * Downloads the digital signature of required phar file','     * @param string $url The signature url','     * @param null|string $signature Set by method on success','     * @return bool If the download succeeded','    protected function getSignature($url','        if (!$result = $this->disableTls) {','            $signature = $this->httpClient->get($url);','            if ($signature) {','                $signature = json_decode($signature','                $signature = base64_decode($signature[''sha384'']);','                $result = true;','     * Verifies the signature of the downloaded phar','     * @param string $version The composer versione','     * @param string $signature The downloaded digital signature','     * @param string $file The temp phar file','    protected function verifySignature($version','            $path = preg_match(''{^[0-9a-f]{40}$}''','            $pubkeyid = openssl_pkey_get_public(''file://''.$path);','            $result = 1 === openssl_verify(','                file_get_contents($file)','                $signature','                $pubkeyid','                $this->algo','            openssl_free_key($pubkeyid);','     * Validates the downloaded phar file','     * @param string $pharFile The temp phar file','    protected function validatePhar($pharFile','        if (ini_get(''phar.readonly'')) {','            // Test the phar validity','            $phar = new Phar($pharFile);','            // Free the variable to unlock the file','            unset($phar);','            if (!$e instanceof UnexpectedValueException && !$e instanceof PharException) {','            $error = $e->getMessage();','     * Returns a string representation of the last json error','     * @return string The error string or code','    protected function getJsonError()','        if (function_exists(''json_last_error_msg'')) {','            return json_last_error_msg();','            return ''json_last_error = ''.json_last_error();','     * Cleans up resources at the end of the installation','     * @param bool $result If the installation succeeded','    protected function cleanUp($result)','        if (!$result) {','            // Output buffered errors','            if ($this->quiet) {','                $this->outputErrors();','            // Clean up stuff we created','            $this->uninstall();','     * Outputs unique errors when in quiet mode','    protected function outputErrors()','        $errors = explode(PHP_EOL','        $shown = array();','        foreach ($errors as $error) {','            if ($error && !in_array($error','                $shown[] = $error;','     * Uninstalls newly-created files and directories on failure','    protected function uninstall()','        foreach (array_reverse($this->installs) as $target) {','            if (is_file($target)) {','                @unlink($target);','            } elseif (is_dir($target)) {','                @rmdir($target);','        if (file_exists($this->tmpFile)) {','            @unlink($this->tmpFile);','    public static function getPKDev()','        return <<<PKDEV','-----BEGIN PUBLIC KEY-----','MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnBDHjZS6e0ZMoK3xTD7f','FNCzlXjX/Aie2dit8QXA03pSrOTbaMnxON3hUL47Lz3g1SC6YJEMVHr0zYq4elWi','i3ecFEgzLcj+pZM5X6qWu2Ozz4vWx3JYo1/a/HYdOuW9e3lwS8VtS0AVJA+U8X0A','hZnBmGpltHhO8hPKHgkJtkTUxCheTcbqn4wGHl8Z2SediDcPTLwqezWKUfrYzu1f','o/j3WFwFs6GtK4wdYtiXr+yspBZHO3y1udf8eFFGcb2V3EaLOrtfur6XQVizjOuk','8lw5zzse1Qp/klHqbDRsjSzJ6iL6F4aynBc6Euqt/8ccNAIz0rLjLhOraeyj4eNn','8iokwMKiXpcrQLTKH+RH1JCuOVxQ436bJwbSsp1VwiqftPQieN+tzqy+EiHJJmGf','TBAbWcncicCk9q2md+AmhNbvHO4PWbbz9TzC7HJb460jyWeuMEvw3gNIpEo2jYa9','pMV6cVqnSa+wOc0D7pC9a6bne0bvLcm3S+w6I5iDB3lZsb3A9UtRiSP7aGSo7D72','8tC8+cIgZcI7k9vjvOqH+d7sdOU2yPCnRY6wFh62/g8bDnUpr56nZN1G89GwM4d4','r/TU7BQQIzsZgAiqOGXvVklIgAMiV0iucgf3rNBLjjeNEwNSTTG9F0CtQ+7JLwaE','wSEuAuRm+pRqi8BRnQ/GKUcCAwEAAQ==','-----END PUBLIC KEY-----','PKDEV;','    public static function getPKTags()','        return <<<PKTAGS','MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0Vi/2K6apCVj76nCnCl2','MQUPdK+A9eqkYBacXo2wQBYmyVlXm2/n/ZsX6pCLYPQTHyr5jXbkQzBw8SKqPdlh','vA7NpbMeNCz7wP/AobvUXM8xQuXKbMDTY2uZ4O7sM+PfGbptKPBGLe8Z8d2sUnTO','bXtX6Lrj13wkRto7st/w/Yp33RHe9SlqkiiS4MsH1jBkcIkEHsRaveZzedUaxY0M','mba0uPhGUInpPzEHwrYqBBEtWvP97t2vtfx8I5qv28kh0Y6t+jnjL1Urid2iuQZf','noCMFIOu4vksK5HxJxxrN0GOmGmwVQjOOtxkwikNiotZGPR4KsVj8NnBrLX7oGuM','nQvGciiu+KoC2r3HDBrpDeBVdOWxDzT5R4iI0KoLzFh2pKqwbY+obNPS2bj+2dgJ','rV3V5Jjry42QOCBN3c88wU1PKftOLj2ECpewY6vnE478IipiEu7EAdK8Zwj2LmTr','RKQUSa9k7ggBkYZWAeO/2Ag0ey3g2bg7eqk+sHEq5ynIXd5lhv6tC5PBdHlWipDK','tl2IxiEnejnOmAzGVivE1YGduYBjN+mjxDVy8KGBrjnz1JPgAvgdwJ2dYw4Rsc/e','TzCFWGk/HM6a4f0IzBWbJ5ot0PIi4amk07IotBXDWwqDiQTwyuGCym5EqWQ2BD95','RGv89BPD+2DLnJysngsvVaUCAwEAAQ==','PKTAGS;','class ErrorHandler','    public $message;','    protected $active;','     * Handle php errors','     * @param mixed $code The error code','     * @param mixed $msg The error message','    public function handleError($code','        if ($this->message) {','            $this->message .= PHP_EOL;','        $this->message .= preg_replace(''{^file_get_contents\(.*?\): }''') )

                                        LIMIT 626 OFFSET 0
                                #0 /document_root/shop/vendor/aimeos/aimeos-laravel/src/Aimeos/Shop/Command/JobsCommand.php(69): Aimeos\Controller\Jobs\Product\Import\Csv\Standard->run()
#1 [internal function]: Aimeos\Shop\Command\JobsCommand->Aimeos\Shop\Command\{closure}(Object(Aimeos\MShop\Context\Item\Standard), Object(Aimeos\Bootstrap), 'product/import/...')
#2 /document_root/shop/vendor/aimeos/aimeos-core/lib/mwlib/src/MW/Process/Pcntl.php(177): call_user_func_array(Object(Closure), Array)
#3 /document_root/shop/vendor/aimeos/aimeos-core/lib/mwlib/src/MW/Process/Pcntl.php(112): Aimeos\MW\Process\Pcntl->exec(Object(Closure), Array)
#4 /document_root/shop/vendor/aimeos/aimeos-core/lib/mwlib/src/MW/Process/Decorator/Check.php(61): Aimeos\MW\Process\Pcntl->start(Object(Closure), Array, true)
#5 /document_root/shop/vendor/aimeos/aimeos-laravel/src/Aimeos/Shop/Command/JobsCommand.php(72): Aimeos\MW\Process\Decorator\Check->start(Object(Closure), Array, true)
#6 [internal function]: Aimeos\Shop\Command\JobsCommand->handle()
#7 /document_root/shop/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(32): call_user_func_array(Array, Array)
#8 /document_root/shop/vendor/laravel/framework/src/Illuminate/Container/Util.php(34): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#9 /document_root/shop/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(90): Illuminate\Container\Util::unwrapIfClosure(Object(Closure))
#10 /document_root/shop/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(34): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#11 /document_root/shop/vendor/laravel/framework/src/Illuminate/Container/Container.php(590): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#12 /document_root/shop/vendor/laravel/framework/src/Illuminate/Console/Command.php(202): Illuminate\Container\Container->call(Array)
#13 /document_root/shop/vendor/symfony/console/Command/Command.php(255): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#14 /document_root/shop/vendor/laravel/framework/src/Illuminate/Console/Command.php(189): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#15 /document_root/shop/vendor/symfony/console/Application.php(934): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#16 /document_root/shop/vendor/symfony/console/Application.php(273): Symfony\Component\Console\Application->doRunCommand(Object(Aimeos\Shop\Command\JobsCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#17 /document_root/shop/vendor/symfony/console/Application.php(149): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 /document_root/shop/vendor/laravel/framework/src/Illuminate/Console/Application.php(90): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#19 /document_root/shop/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(131): Illuminate\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#20 /document_root/shop/artisan(37): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

User avatar
aimeos
Administrator
Posts: 7884
Joined: 01 Jan 1970, 00:00

Re: csv import - no success or error message, product not imported

Post by aimeos » 19 Nov 2019, 10:12

Your location setting is still wrong, it's set to the current directory and tries to import a PHP file
Professional support and custom implementation are available at Aimeos.com
If you like Aimeos, Image give us a star

columbo
Advanced
Posts: 124
Joined: 09 Oct 2019, 09:42

Re: csv import - no success or error message, product not imported

Post by columbo » 19 Nov 2019, 16:12

now it's working - thank's!
here my updated shop.php, maybe its usefull for others:

Code: Select all

'import' => [
	'csv' => [
		'location' => public_path() . '/tmp',
		'container' => [
			'type' => 'Directory',
			'content' => 'CSV',
		],
		'skip-lines' => 1,
	],
	'mapping' => [
		'item' => [
			0 => 'product.code', // e.g. unique EAN code
			1 => 'product.type', // type of the product, e.g. "default" or "selection"
			2 => 'product.status', // enabled (1) or disabled (0)
			3 => 'product.label', // UTF-8 encoded text, also used as product name
		],
		.....
	],
],

User avatar
aimeos
Administrator
Posts: 7884
Joined: 01 Jan 1970, 00:00

Re: csv import - no success or error message, product not imported

Post by aimeos » 19 Nov 2019, 22:35

You should use storage_path() instead of public_path() if you don't want your complete product data to be publically available.
Professional support and custom implementation are available at Aimeos.com
If you like Aimeos, Image give us a star

Post Reply