Allora ho fatte altre prove, ho scoperto che il problema era altrove, in pratica $url non contiene un url ben formato.
Questo deve portare sempre il protocollo, avevo pensato invece che fosse predefinito l'http, va be, fesso io.
Ora funge perfettamente.