I get positive variable's identifier (with the printf) but the values inside the shader doesn't change. Maybe they stay to 0. I don't understand where is the problem. I have wrote another shader with three uniform sampler2D and it works ...

You seem to be activating your shader before you try to set a uniform value,
so that common mistake is not the cause of your problems.
In some Nvidia drivers, I have experienced that glUniform1f and
glUniform1i were broken, so I had to work around the problem by
using glUniform1fv and glUniform1iv instead, and pass the pointer to
a scalar value. That was quite some time ago, though, and it would
surprise me if then haven't fixed it now. I did report it as a bug.