AGGIORNAMENTO (scusate ma non posso più editare il messaggio qua sopra):

eseguendo il comando da cmd funziona, mentre in php viene prodotto un file vuoto
Codice PHP:
$per 'C:/Program Files/MySQL/MySQL Server 5.1/bin/';
$bkpath './db_backups/';

exec($per.'mysqldump -h'.$host.' -u'.$userid.' -p'.$password.' --opt '.$dbname.' > '.$bkpath.$dbname.'.sql'); 
naturalmente password utente host e database sono corretti.
ho dato tutti i diritti di scrittura sulla cartella di destinazione del file, e comunque riesco a scriverci file con php.
inoltre non capisco perchè se rimuovo l'argomento --opt dalla linea di comando il backup viene eseguito correttamente lo stesso, mentre in php non viene più prodotto nemmeno il file: non succede nulla.

ho il sospetto che il problema stia nell'indirizzo dell'eseguibile mysqldump, dato che non funziona ne con gli slash ne con i backslash. ad ogni modo mi servirebbe un path relativo per trovarlo anche sul server remoto, dove c'è linux.

potrebbe altrimenti essere qualche impostazione di php?
grazie