MCRYPT_RIJNDAEL_256
não é AES-256. É a cifra Rijndael com um tamanho de bloco de 256 (daí o erro). AES é um subconjunto da cifra Rijndael usando tamanho de bloco de 128 bits e chave tamanhos de 128, 192 e 256 bits. Isso também se reflete no tamanho do IV. Para criar um texto cifrado criptografado AES-256, você pode usar
MCRYPT_RIJNDAEL_128
com o tamanho de chave correto (256 bits são 32 bytes). O _128
postfix indica o tamanho do bloco a ser usado; você ainda pode usá-lo com qualquer tamanho de chave válido de 128, 192 ou 256 bits. Esteja ciente de que o mcrypt - especialmente a biblioteca C subjacente - não é mais mantido. É melhor usar as bibliotecas de criptografia openssl ou posteriores.
Os wrappers mcrypt e OpenSSL também permitirão tamanhos de chave inválidos, apenas avisando - se você tiver sorte. É claro que isso não é compatível com qualquer biblioteca AES bem definida.