Still having issues

After hacking the cron job to make it work on GoDaddy hosting… I’m not getting an updated visitor log but I’m unable to see ANY graph data for anything. The only thing working in Piwik is the visitor log.

Any suggestions? The cron runs with no errors.

You may need to be more specific on the hacking you did.

The hack just allowed the achive.sh file to be executed on Godaddy hosting as godaddy does not specify the PHP path in it’s cron jobs.

Below is a copy of the file in it’s current state (again it’s archiving, but it’s not showing anything in the piwik besides the visitor log area):


#!/bin/sh -e

# Description
# This cron script will automatically run Piwik archiving every hour.
# The script will also run scheduled tasks configured within piwik using
# the event hook 'TaskScheduler.getScheduledTasks'

# It automatically fetches the Super User token_auth
# and triggers the archiving for all websites for all periods.
# This ensures that all reports are pre-computed and Piwik renders very fast.

# Documentation
# Please check the documentation on http://piwik.org/docs/setup-auto-archiving/

# How to setup the crontab job?
# Add the following lines in your crontab file, eg. /etc/cron.d/piwik-archive
#---------------START CRON TAB--
#MAILTO="youremail@example.com"
#5 * * * * www-data /path/to/piwik/misc/cron/archive.sh > /dev/null
#-----------------END CRON TAB--
# When an error occurs (eg. php memory error, timeout) the error messages
# will be sent to youremail@example.com.
#
# Optimization for high traffic websites
# You may want to override the following settings in config/config.ini.php:
# See documentation of the fields in your piwik/config/config.ini.php
#
# [General]
# time_before_archive_considered_outdated = 3600
# enable_browser_archiving_triggering = false
#===========================================================================
# PATH = "$PATH:/usr/local/php5/bin/php"

# for TEST_PHP_BIN in php5 php php-cli php-cgi; do
  # if which $TEST_PHP_BIN >/dev/null 2>/dev/null; then
    # PHP_BIN=`which $TEST_PHP_BIN`
    # break
  # fi
# done
# if test -z $PHP_BIN; then
  # echo "PATH: $PATH" >&2
  # echo "php binary not found. Make sure php5 or php exists in PATH." >&2
  # exit 1
# fi
# PHP_BIN = "/usr/local/php5/bin/php"
DUMMY="/usr/local/php5/bin/php"

act_path() {
  local pathname="$1"
  readlink -f "$pathname" 2>/dev/null || \
  realpath "$pathname" 2>/dev/null || \
  type -P "$pathname" 2>/dev/null
}

ARCHIVE=`act_path ${0}`
PIWIK_CRON_FOLDER=`dirname ${ARCHIVE}`
PIWIK_PATH="$PIWIK_CRON_FOLDER"/../../index.php
PIWIK_CONFIG="$PIWIK_CRON_FOLDER"/../../config/config.ini.php

PIWIK_SUPERUSER=`sed '/^\[superuser\]/,$!d;/^login[ \t]*=[ \t]*"*/!d;s///;s/"*[ \t]*$//;q' $PIWIK_CONFIG`
PIWIK_SUPERUSER_MD5_PASSWORD=`sed '/^\[superuser\]/,$!d;/^password[ \t]*=[ \t]*"*/!d;s///;s/"*[ \t]*$//;q' $PIWIK_CONFIG`

CMD_TOKEN_AUTH="$DUMMY -q $PIWIK_PATH -- module=API&method=UsersManager.getTokenAuth&userLogin=$PIWIK_SUPERUSER&md5Password=$PIWIK_SUPERUSER_MD5_PASSWORD&format=php&serialize=0"
TOKEN_AUTH=`$CMD_TOKEN_AUTH`

CMD_GET_ID_SITES="$DUMMY -q $PIWIK_PATH -- module=API&method=SitesManager.getAllSitesId&token_auth=$TOKEN_AUTH&format=csv&convertToUnicode=0"
ID_SITES=`$CMD_GET_ID_SITES`

CMD_GET_SEGMENTS_TO_ARCHIVE="$DUMMY -q $PIWIK_PATH -- module=API&method=CoreAdminHome.getKnownSegmentsToArchive&token_auth=$TOKEN_AUTH&format=csv&convertToUnicode=0"
SEGMENTS_TO_ARCHIVE=`$CMD_GET_SEGMENTS_TO_ARCHIVE`

echo "Starting Piwik reports archiving..."
echo ""
for idsite in $ID_SITES; do
  TEST_IS_NUMERIC=`echo $idsite | egrep '^[0-9]+$'`
  if test -n "$TEST_IS_NUMERIC"; then
    for period in day week month year; do
      echo ""
      echo "Archiving period = $period for idsite = $idsite..."
      CMD="$DUMMY -q $PIWIK_PATH -- module=API&method=VisitsSummary.getVisits&idSite=$idsite&period=$period&date=last52&format=xml&token_auth=$TOKEN_AUTH"
      $CMD
      
      for segment in $SEGMENTS_TO_ARCHIVE; do
	    if test $segment != "value"; then
      	  echo ""
      	  echo " - Archiving for visitor segment $segment ..." 
      	  CMD_ARCHIVE_SEGMENT="${CMD}&segment=$segment"
      	  $CMD_ARCHIVE_SEGMENT
      	fi
      done
    done

    echo ""
    echo "Archiving for idsite = $idsite done!"
  fi
done

echo "Reports archiving finished."
echo "---------------------------"
echo "Starting Scheduled tasks..."
echo ""
CMD="$DUMMY -q $PIWIK_PATH -- module=API&method=CoreAdminHome.runScheduledTasks&format=csv&convertToUnicode=0&token_auth=$TOKEN_AUTH"
# echo "$CMD"
# echo "$DUMMY"
$CMD
echo ""
echo "Finished Scheduled tasks."
echo ""


This has been resolved was an issue on my part with making piwik more secure through the base site.

Could you elaborate on what went wrong ? If you do so other people with the same problem will benefit from your experience. Thank you!

I had edited Piwik to forward to the main site if the user didn’t have access via the main site’s authorization class. And sense the server hits it I had to allow the server’s IP through. Was due to a custom coding of Piwik nothing on Piwik’s part.