At least you've tried.
I agree that its most likely an environment problem, and the best way to see what environment your're really working with is to capture the environments to files and then diff them, so .. add
set > /tmp/myEnvrionrment.$$
right after your
.$$ variable appended to the /tmp filename is the Shell's variable for "current process id", and hence is a relatively unique number, that should be different for each time you run your script.J)
Run the script from cmd line, then from cron
Assuming that there are only two files there, otherwise, look at the timestamps on those files and delete others so you only have 2 files, 1 representing the cmd-line run and the other from the crontab run.
set shows local variables (which should include exported variables), this should work. If you get identical lists in both set output files, then try
export > /tmp/myExportedVars.$$
as above, and try diffing those.
Look not only at PATH, but LD_* vars and LANG vars.