tôi từ lâu đã giữ tất cả mọi thứ ngoại trừ kịch bản trực tiếp có thể xem bên ngoài gốc web. Sau đó cấu hình PHP để bao gồm thư mục script của bạn trong đường dẫn. Một tập hợp điển hình lên sẽ là:
appdir
include
html
Trong cấu hình PHP (hoặc PHP cấu hình toàn cầu hoặc trong một tập tin .htaccess
trong thư mục html
) thêm này:
include_path = ".:/path/to/appdir/include:/usr/share/php"
hoặc (dành cho Windows)
include_path = ".;c:\path\to\appdir\include;c:\php\includes"
Lưu ý rằng dòng này có thể đã có trong tệp php.ini
của bạn, nhưng có thể được nhận xét cho phép các giá trị mặc định hoạt động. Nó cũng có thể bao gồm các đường dẫn khác. Hãy chắc chắn để giữ những người, là tốt.
Nếu bạn đang thêm nó vào một tập tin .htaccess, định dạng là:
php_value include_path .:/path/to/appdir/include:/usr/share/php
Cuối cùng, bạn có thể thêm đường dẫn programatically với một cái gì đó như thế này:
$parentPath = dirname(dirname(__FILE__));
$ourPath = $parentPath . DIRECTORY_SEPARATOR . 'include';
$includePath = ini_get('include_path');
$includePaths = explode(PATH_SEPARATOR, $includePath);
// Put our path between 'current directory' and rest of search path
if ($includePaths[0] == '.') {
array_shift($includePaths);
}
array_unshift($includePaths, '.', $ourPath);
$includePath = implode(PATH_SEPARATOR, $includePaths);
ini_set('include_path', $includePath);
(Dựa trên mã hoạt động, nhưng đã được sửa đổi, do đó chưa được kiểm tra)
Điều này sẽ được chạy trong tệp giao diện người dùng của bạn (ví dụ: index.php
). Tôi đặt nó trong một tập tin bao gồm riêng biệt, sau khi sửa đổi ở trên, có thể được bao gồm với một cái gì đó như #include '../includes/prepPath.inc'
.
Tôi đã sử dụng tất cả các phiên bản tôi đã trình bày ở đây với thành công. Phương pháp cụ thể được sử dụng tùy thuộc vào sở thích và cách triển khai dự án.Nói cách khác, nếu bạn không thể sửa đổi php.ini
, rõ ràng bạn không thể sử dụng phương thức đó
Bạn có thể làm rõ hơn không? Tôi thực sự không hiểu làm thế nào bạn muốn một tập tin không được chạy nếu bạn trỏ trình duyệt của bạn đến nó ... –
Có thể nếu các hàm preforms hoạt động, có thể vì mục đích bảo mật, tại sao lại không liên quan. – UnkwnTech
@Unkwntech: sự nhầm lẫn của tôi xuất phát từ thực tế là nếu một tệp nằm trong webroot, nó phải là để xem, bất cứ điều gì an toàn phải ở bên ngoài ... –