Well, that's doable - I have done something similar, but only with 3 devices on the network and using Node.js and C# (two different applications) instead of Apache/PHP (Javascript being a slightly more tolerable abomination of a language than PHP).
Just don't get tripped up by catastrophically bad implementations of Modbus - almost every single one I have seen has weird bugs and idiosyncrasies that will trip you up. Things such as Modbus working with 16bit words, not 8bit bytes making some operations "fun" to implement, "coils" and "registers" may or may not share the same memory space (both on the PLC and in the library), gems like relying on receiving replies in order (even though the spec explicitly says to
not do that). Guess what happened when I tried to actually talk to a real PLC (and not just another copy of the library) using one them ...
Be prepared for some pretty low level debugging with a lot of bit manipulations and network sniffing. Also do get an actual PLC for development as soon as you can otherwise your code may work perfectly fine with a simulator and blow up spectacularly in random ways when you try to talk to the real hw.
Modbus is fun
Considering that this stuff is used to control things in nuclear plants and elsewhere is not something that makes one sleep well ...