the ? part is actually an instruction to whatever passes the file as it's a get request. If the fopen command can't send data in the get request, then this will fail.
If that is the case, then your best bet would be opening a socket connection and performing the get manually (not hard at all).
Dave