На самом деле, их слишком много, чтобы перечислять. Причина в том, что очень сложно написать полезное приложение, включающее только ядро php (вообще без расширений). Поэтому, если вы хотите, чтобы он был очень переносимым, вам нужно иметь возможность использовать другие расширения (например, он должен иметь возможность использовать расширения PDO, MySQL и MySQLi, если вы используете базу данных MySQL).
В действительности существует множество зависимостей, которые вам необходимо проверить. Это не практично, чтобы перечислить их всех здесь (не в долгосрочной перспективе). Даже такие простые вещи, как включение путей, могут быть проблемой, если вы работаете в Windows или с включенным безопасным режимом. И это даже не принимает во внимание различные возможные настройки ini.
К счастью, есть достаточно простое решение. Используйте рамки. Большинство фреймворков имеют резервные методы и могут работать разными способами в зависимости от конфигурации сервера. Существует множество фреймворков, поэтому я не буду вдаваться в подробности, какие из них я бы порекомендовал. Используя уровень абстракции, они могут работать с несколькими различными возможными конфигурациями (другой пример - технология кэширования, с драйверами для APC, Eacellerator, MySQL, XCache, Memcache и т. Д.).
Единственное, что вы можете сделать, чтобы быть на 100% уверенным, это проверить. Я бы порекомендовал написать как можно больше тестов модулей, интеграции и функциональности. Такие инструменты, как PHPUnit и Selenium могут сильно помочь в этом.
Как только вы автоматизируете тестирование, я бы предложил использовать инструмент непрерывной интеграции (такой как Hudson ) для автоматизации тестирования на основе фиксации SVN. С его помощью вы можете настроить несколько целевых платформ для тестирования. Таким образом, вы можете запустить 10 или 15 различных виртуальных серверов и автоматически проверять каждый коммит на каждой конфигурации (Hudson поможет вам). Таким образом, вы мгновенно узнаете (ну, в любом случае, быстро), работает ли ваш код с каждым коммитом без необходимости делать что-либо еще с вашей стороны.
Это не простая проблема, чтобы решить. Но это разрешимо с небольшим усилием и некоторой изобретательностью.
Другая разумная вещь, которую вы можете сделать, это объявить минимальные требования и проверить их. Поэтому, если вам нужна поддержка MySQL, проверьте ее во время установки ... То же самое можно сделать с настройками INI ... Просто перечислите минимальную требуемую конфигурацию и проверьте ее. Таким образом, если кто-то придумает «неподдерживаемую платформу», вам не нужно беспокоиться, так как им сразу скажут, что это не сработает ...
Удачи ...