I'd be surprised if you can avoid a microprocessor in your project, which makes calibration way easier. You can build in a simple signal generator and switch it in automatically before each measurement. That solved the problem of calibrating the amp, but not the sensor. Though you could probably program a compensation curve in the processor too.
There are several solutions for log amps. Look at this info from Maxim. It shows the basic theory on how a DC log amp works. Consider that the commercial amps are expensive because they have to compensate internally - you can do that with software.
A trick is to put a series of amplifiers in series, and sum their output. One by one the amplifier will start to saturate, and provide a piece-wise approximation. This circuit does that, but the amplifiers are expensive because they're supposed to work till video. For DC work, any amp should work.
Another interesting article show that even simple circuits can provide quite good results.
I wonder if modulating the light source could provide for a calibration of the entire system...
Does an op-amp need a bipolar supply? And why can't it operate from a single supply?
This is entirely dependent on the op-amp in question and the circuit you are using it in. There are op-amps that require a bipolar supply, and op-amps that are happy with a single supply. The LM324 is designed to swing within ~5mV of ground and within ~1.5V of the positive supply rail (when powered by reasonable voltages, say, 5V-30V).
All of your circuits are rather strange. While it initially appears that you have connected feedback paths, this is not true. The first two circuits simply have a 100Ω output load resistor, and no feedback. If yo draw the schematics in a more usual manner, this should become immediately apparent. Because of this, you are operating the op-amp as a comparator (the + input is 3V higher than the - input), and you should not trust the simulator. Intuitively, when the + input is significantly higher than the - input, the output will go to the rail. However, with a 100Ω load, the op-amp may not be able to source enough current. The point is, your output voltage is unpredictable, and the simulator may not accurately model this behaviour.
The third circuit is clearly marked incorrectly, you have marked a grounded node as "6V". Additionally, you are shorting the output of the op-amp to ground, which will make the op-amp sad.
Regarding your edited circuits: the first circuit is a non-inverting op-amp with an input of 3V and a gain of 2. Hence, the output is 6V.
The second circuit is still problematic; as I have already explained above, the op-amp is trying to drive the output to the + rail, but the load is large enough that the output is drawn down. Your label is misleading, it is very likely not 3V. It might be close to 3V, but the output is unpredictable and may depend on idiosyncrasies of the simulator model.
Best Answer
The BC547B and BC557B don't match perfectly in their b-e junction I-V characteristic. When I simulate driving equal current through the b-e of these two devices I see about 12 mV difference in the required b-e voltage:
(vp being the voltage applied to the BC557's junction and -vn being the voltage applied to the BC547's b-e junction to achieve equal current)
This difference will result in more current flowing through Q3 than the sum of currents through Q2 and Q1, and the output of your circuit being greater than the product of the values of the two input voltages. You can check this in your simulation by plotting the emitter currents of the three transistors.
If you find a way to use BC547 for the antilog function, this circuit ought to work in simulation. But in real life, you'll find that device-to-device variations (and thermal differences between the different transistors) will still result in some error in the output voltage, relative to the nominal multiplying behavior.