An abstract class in PHP is a base class that cannot be directly instantiated, but is meant to be inherited by child classes. It may contain abstract methods that must be implemented by subclasses, as well as normal methods. An interface in PHP allows for multiple inheritance by defining method signatures without implementations, forcing implementing classes to provide the method bodies. The key differences are that abstract classes can contain method implementations while interfaces cannot, and interfaces require all methods to be public while abstract classes allow public and protected methods.