Это происходило со мной и при запуске $ _POST в MAMP. Все мои файлы .ini и httpd были настроены правильно. Если вы выполняете обработку формы, и у вас есть html-документ и размещаете информацию в обработчике php form, работающем под $ POST, убедитесь, что вы запускаете html-файл с localhost через ваш сервер, а не только локально.
Это был ярлык, который я сделал для запуска html-документов, просто нажав html-файл в моем каталоге и запустив в своем веб-браузере, когда на самом деле, чтобы проверить, обрабатывается ли php в вашей форме, вы должны запустите html через свои серверы.
Неверно: file:///Applications/MAMP/htdocs/form/form.html
Вправо: http://localhost:your port number/form/form.html
Теперь php следует обработать, как только вы нажмете кнопку отправки
Обычно я устанавливаю константу вручную или так:
define('ROOT', dirname(__FILE__));
Затем делаю
require ROOT . '/include/file.php';
Определенно не программируйте пути жестко, как вариант второй. Хорошая альтернатива:
define('BASE_DIR', '/home/ftpuser/public_html/includes');
include(BASE_DIR . '/myscript.php');
include(BASE_DIR . '/myscript2.php');
include(BASE_DIR . '/myscript3.php');
include(BASE_DIR . '/myscript4.php');
Учитывая, что у вас, вероятно, будет где-то от 5 до 50 включений (я предполагаю), я бы особо не беспокоился об этом. Просто идите относительными путями. Разницы во времени включения даже не будет заметно. Если вы разрабатываете большое веб-приложение и их будет сотни, это может быть другая история ...
Я обычно настраиваю свои подключаемые каталоги / библиотеки, устанавливая путь включения при инициализации моего приложения.
set_include_path("/home/ftpuser/public_html/includes");
include("myscript.php");
Фреймворк zend делает нечто подобное для загрузки библиотечных классов.
The most important thing is to arrange the include paths so that the largest amount of require
/include
-calls are trapped in the first mentioned path when not including a file via an absolute path in the first place.
Relying on including everything via an absolute path is hard to maintain because changing the path of your library means individually changing all those files refering to it instead of changing the include path in one place.
Было бы хорошо, если бы вы протестировали все методы, проверив время, необходимое для выполнения каждого, лично я никогда не беспокоился об этом и просто использовал относительные пути.
Я полагаю, что абсолютные пути будет немного быстрее, возможно, стоит задаться вопросом, что происходит при ошибке, будет ли он выдавать полный путь к файлу на экран пользователя (очевидно, выключить error_reporting) и вызовет ли это угрозу безопасности?
когда не используется абсолютный путь, php пытается найти файл во всех включаемых путях, пока не найдет совпадение.
можно добавить любое количество включаемых путей, поэтому в редких случаях это может привести к замедлению работы сценария.
Если вы включаете много файлов (например, для инициализации фреймворка), используя абсолютные пути, это может немного ускорить сценарий ...
Я думаю, что это также может вызвать сложности, когда одно и то же относительное значение пути / имени файла встречается несколько раз в файловая система, и поэтому php выбирает первое вхождение, когда вам может понадобиться другое вхождение
Это лучший метод для 99% случаев:
include(dirname(__FILE__)."/includes/myscript.php");
В конечном итоге это абсолютный путь, что означает, что он игнорирует include_path
, который является известным источником большого количества связанных ошибок в моем опыте ...
Однако с точки зрения производительности я сомневаюсь, что существует большая разница между абсолютным и относительным путями. Это своего рода микрооптимизация, которая в конечном итоге ничего не значит. Как правило, в include_path
будет только 2-3 объекта, если вы не добавите больше. Два обычных виновника - .