Hướng dẫn how to require a file in a different folder php? - làm cách nào để yêu cầu một tệp trong một thư mục php khác?

Có một số cách để đạt được điều này.

Sử dụng đường dẫn tương đối từ form.php

require_once __DIR__ . '/otherfile.php';

Nếu bạn đang sử dụng Php 5.2 trở lên, bạn có thể sử dụng dirname(__FILE__) thay vì __DIR__. Đọc thêm về các hằng số ma thuật ở đây.

Sử dụng biến $_SERVER['DOCUMENT_ROOT']

Đây là đường dẫn tuyệt đối đến gốc tài liệu của bạn: /var/www/example.org/ hoặc C:\wamp\www\ trên Windows.

Root tài liệu là thư mục nơi các tệp cấp gốc của bạn là: http://example.org/index.php sẽ có trong $_SERVER['DOCUMENT_ROOT'] . '/index.php'

Sử dụng: require_once $_SERVER['DOCUMENT_ROOT'] . '/include/otherfile.php';

Sử dụng một trình tải tự động

Điều này có thể sẽ hơi quá mức cho ứng dụng của bạn nếu nó rất đơn giản.

Thiết lập PHP bao gồm các đường dẫn

Bạn cũng có thể đặt các thư mục nơi PHP sẽ tìm các tệp khi bạn sử dụng require() hoặc form.php0. Kiểm tra form.php1 tại đây.

Sử dụng: form.php2


Note:

Tôi thấy một số câu trả lời đề xuất sử dụng URL bên trong require(). Tôi sẽ không đề xuất điều này vì tệp PHP sẽ được phân tích cú pháp trước khi bao gồm. Điều này là ổn đối với các tệp HTML hoặc các tập lệnh PHP đầu ra HTML, nhưng nếu bạn chỉ có một định nghĩa lớp ở đó, bạn sẽ nhận được kết quả trống.

Php yêu cầu câu lệnh FILE là giống hệt nhau bao gồm câu lệnh FILE (ngoại trừ khi thất bại, nó cũng sẽ tạo ra lỗi cấp độ E_Compile_error gây tử vong). Ngoài ra, các đường dẫn tập tin tuyệt đối và cú pháp của họ là giống hệt nhau.
Also, their syntax relative and absolute file paths are identical.

PHP yêu cầu tuyên bố tệp

yêu cầu 'myfile.php';


PHP yêu cầu tệp từ thư mục cha mẹ (thư mục) - đường dẫn tương đối

yêu cầu (dirname (__ dir __). '/ ../ myfile.php');



PHP yêu cầu tệp từ thư mục gốc

yêu cầu ($ _ server ['Document_root']. "/myfile.php");


PHP yêu cầu tệp thư mục sâu hơn sau đó root - đường dẫn tuyệt đối

$ root = realPath ($ _ server ["document_root"]); yêu cầu "$ root/furder1/furder2/myfile.php"; require "$root/folder1/folder2/myfile.php";

Ray.paseur thường sử dụng gmail ¶

8 năm trước

Các tài liệu dưới đây cũng áp dụng để yêu cầu.require.

Các tệp được bao gồm dựa trên đường dẫn tệp được cung cấp hoặc, nếu không được cung cấp, bao gồm_path được chỉ định. Nếu tệp không được tìm thấy trong bao gồm_path, form.php4 cuối cùng sẽ kiểm tra thư mục riêng của tập lệnh gọi và thư mục làm việc hiện tại trước khi không thành công. Cấu trúc form.php4 sẽ phát ra một form.php7 nếu nó không thể tìm thấy một tệp; Đây là hành vi khác với yêu cầu, sẽ phát ra một form.php8.form.php7 if it cannot find a file; this is different behavior from require, which will emit an form.php8.

Lưu ý rằng cả form.php4 và dirname(__FILE__)0 đều tăng thêm form.php7, nếu không thể truy cập tệp, trước khi tăng lần lượt là form.php7 hoặc form.php8 cuối cùng.form.php7s, if the file cannot be accessed, before raising the final form.php7 or form.php8, respectively.

Nếu một đường dẫn được xác định - cho dù là tuyệt đối (bắt đầu với một ký tự ổ đĩa hoặc dirname(__FILE__)4 trên Windows hoặc dirname(__FILE__)5 trên các hệ thống UNIX/Linux) hoặc liên quan đến thư mục hiện tại (bắt đầu bằng dirname(__FILE__)6 hoặc dirname(__FILE__)7) - bao gồm_path sẽ bị bỏ qua hoàn toàn. Ví dụ: nếu một tên tệp bắt đầu bằng dirname(__FILE__)8, trình phân tích cú pháp sẽ tìm trong thư mục cha để tìm tệp được yêu cầu.

Để biết thêm thông tin về cách xử lý PHP bao gồm các tệp và đường dẫn bao gồm, hãy xem tài liệu cho bao gồm_path.

Khi một tệp được bao gồm, mã nó chứa kế thừa phạm vi biến của dòng mà bao gồm xảy ra. Bất kỳ biến nào có sẵn ở dòng đó trong tệp gọi sẽ có sẵn trong tệp được gọi, từ thời điểm đó trở đi. Tuy nhiên, tất cả các chức năng và các lớp được xác định trong tệp bao gồm có phạm vi toàn cầu.

Ví dụ #1 Ví dụ form.php4 cơ bản

__DIR__0

__DIR__1

__DIR__2

Nếu bao gồm xảy ra bên trong một hàm trong tệp gọi, thì tất cả các mã có trong tệp được gọi sẽ hoạt động như thể nó đã được xác định bên trong hàm đó. Vì vậy, nó sẽ theo phạm vi biến của chức năng đó. Một ngoại lệ cho quy tắc này là các hằng số ma thuật được đánh giá bởi trình phân tích cú pháp trước khi bao gồm xảy ra.

Ví dụ #2 bao gồm trong các chức năng

__DIR__3

__DIR__4

__DIR__5

Khi bao gồm một tệp, phân tích cú pháp rơi ra khỏi chế độ PHP và vào chế độ HTML ở đầu tệp đích và tiếp tục lại ở cuối. Vì lý do này, bất kỳ mã nào bên trong tệp đích sẽ được thực thi dưới dạng mã PHP phải được đặt trong các thẻ bắt đầu và kết thúc PHP hợp lệ.

Nếu "URL bao gồm trình bao bọc" được bật trong PHP, bạn có thể chỉ định tệp được bao gồm bằng URL (thông qua HTTP hoặc trình bao bọc được hỗ trợ khác - xem các giao thức và trình bao quy hoạt được hỗ trợ cho danh sách các giao thức) thay vì tên đường dẫn cục bộ. Nếu máy chủ đích diễn giải tệp đích làm mã PHP, các biến có thể được chuyển đến tệp được bao gồm bằng chuỗi yêu cầu URL như được sử dụng với HTTP GET. Điều này không hoàn toàn nói điều tương tự như bao gồm tệp và việc kế thừa phạm vi biến của tệp cha mẹ; Kịch bản thực sự đang được chạy trên máy chủ từ xa và kết quả sau đó được đưa vào tập lệnh cục bộ.

Ví dụ #3 form.php4 đến HTTP

__DIR__7

__DIR__8

__DIR__9

Cảnh báo

Cảnh báo an ninh

Tệp từ xa có thể được xử lý tại máy chủ từ xa (tùy thuộc vào phần mở rộng tệp và thực tế nếu máy chủ từ xa chạy PHP hay không) nhưng nó vẫn phải tạo ra một tập lệnh PHP hợp lệ vì nó sẽ được xử lý tại máy chủ cục bộ. Nếu tệp từ máy chủ từ xa nên được xử lý ở đó và chỉ xuất ra, readFile () có chức năng tốt hơn nhiều để sử dụng. Nếu không, cần phải chăm sóc đặc biệt để bảo mật tập lệnh từ xa để tạo mã hợp lệ và mong muốn.readfile() is much better function to use. Otherwise, special care should be taken to secure the remote script to produce a valid and desired code.

Xem thêm các tệp từ xa, fopen () và file () để biết thông tin liên quan.fopen() and file() for related information.

Trả lại xử lý: form.php4 Trả về $_SERVER['DOCUMENT_ROOT']1 về thất bại và đưa ra cảnh báo. Thành công bao gồm, trừ khi được ghi đè bởi tệp đi kèm, trả về $_SERVER['DOCUMENT_ROOT']2. Có thể thực thi câu lệnh trả về bên trong một tệp được bao gồm để chấm dứt xử lý trong tệp đó và quay lại tập lệnh gọi nó. Ngoài ra, có thể trả về các giá trị từ các tệp được bao gồm. Bạn có thể lấy giá trị của cuộc gọi bao gồm như bạn sẽ làm cho một hàm bình thường. Tuy nhiên, điều này không thể xảy ra khi bao gồm các tệp từ xa trừ khi đầu ra của tệp từ xa có thẻ bắt đầu và kết thúc PHP hợp lệ (như với bất kỳ tệp cục bộ nào). Bạn có thể khai báo các biến cần thiết trong các thẻ đó và chúng sẽ được giới thiệu tại bất kỳ điểm nào được đưa vào tệp.return statement inside an included file in order to terminate processing in that file and return to the script which called it. Also, it's possible to return values from included files. You can take the value of the include call as you would for a normal function. This is not, however, possible when including remote files unless the output of the remote file has valid PHP start and end tags (as with any local file). You can declare the needed variables within those tags and they will be introduced at whichever point the file was included.

Bởi vì form.php4 là một cấu trúc ngôn ngữ đặc biệt, dấu ngoặc đơn không cần thiết xung quanh lập luận của nó. Hãy cẩn thận khi so sánh giá trị trả lại.

Ví dụ #4 So sánh giá trị trả về của bao gồm

$_SERVER['DOCUMENT_ROOT']4

Ví dụ #5 form.php4 và câu lệnh trả vềreturn statement

$_SERVER['DOCUMENT_ROOT']6

$_SERVER['DOCUMENT_ROOT']7

$_SERVER['DOCUMENT_ROOT']8

$_SERVER['DOCUMENT_ROOT']9 là giá trị $_SERVER['DOCUMENT_ROOT']2 vì bao gồm đã thành công. Lưu ý sự khác biệt giữa các ví dụ trên. Việc sử dụng đầu tiên trả về trong tệp được bao gồm trong khi tài liệu khác thì không. Nếu tệp không thể được bao gồm, /var/www/example.org/1 sẽ được trả về và form.php7 được phát hành.return within the included file while the other does not. If the file can't be included, /var/www/example.org/1 is returned and form.php7 is issued.

Nếu có các chức năng được xác định trong tệp bao gồm, chúng có thể được sử dụng trong tệp chính độc lập nếu chúng trước khi trả về hoặc sau. Nếu tệp được bao gồm hai lần, PHP sẽ gây ra lỗi nghiêm trọng vì các chức năng đã được khai báo. Nên sử dụng bao gồm_once thay vì kiểm tra xem tệp đã được bao gồm và có điều kiện trả về bên trong tệp được bao gồm.return or after. If the file is included twice, PHP will raise a fatal error because the functions were already declared. It is recommended to use include_once instead of checking if the file was already included and conditionally return inside the included file.

Một cách khác để "bao gồm" một tệp PHP vào một biến là nắm bắt đầu ra bằng cách sử dụng các hàm điều khiển đầu ra với form.php4. Ví dụ:

Ví dụ #6 Sử dụng bộ đệm đầu ra để bao gồm tệp PHP vào chuỗi

/var/www/example.org/4

/var/www/example.org/5

/var/www/example.org/6

Để tự động bao gồm các tệp trong các tập lệnh, hãy xem thêm các tùy chọn cấu hình auto_prepend_file và auto_append_file trong php.ini.

Lưu ý: Bởi vì đây là một cấu trúc ngôn ngữ và không phải là một hàm, nó không thể được gọi là sử dụng các hàm biến hoặc các đối số được đặt tên.: Because this is a language construct and not a function, it cannot be called using variable functions, or named arguments.

Xem thêm Yêu cầu, Yêu cầu_once, Bao gồm_once, get_included_files (), readFile (), ảo () và bao gồm_path.require, require_once, include_once, get_included_files(), readfile(), virtual(), and include_path.

Snowyurik tại gmail dot com

14 năm trước

/var/www/example.org/7

Phát ban ¶

7 năm trước

/var/www/example.org/8

/var/www/example.org/9

C:\wamp\www\0

C:\wamp\www\1

John Carty ¶

6 năm trước

C:\wamp\www\2

C:\wamp\www\3

C:\wamp\www\4

C:\wamp\www\5

C:\wamp\www\6

C:\wamp\www\7

C:\wamp\www\8

C:\wamp\www\9

$_SERVER['DOCUMENT_ROOT'] . '/index.php'0

Anon ¶

10 năm trước

$_SERVER['DOCUMENT_ROOT'] . '/index.php'1

Lỗi17191 tại Gmail Dot Com ¶

7 năm trước

$_SERVER['DOCUMENT_ROOT'] . '/index.php'2

$_SERVER['DOCUMENT_ROOT'] . '/index.php'3

$_SERVER['DOCUMENT_ROOT'] . '/index.php'4

$_SERVER['DOCUMENT_ROOT'] . '/index.php'5

$_SERVER['DOCUMENT_ROOT'] . '/index.php'0

John Carty ¶

14 năm trước

$_SERVER['DOCUMENT_ROOT'] . '/index.php'7

$_SERVER['DOCUMENT_ROOT'] . '/index.php'8

$_SERVER['DOCUMENT_ROOT'] . '/index.php'0

Phát ban ¶

14 năm trước

require_once $_SERVER['DOCUMENT_ROOT'] . '/include/otherfile.php';0

require_once $_SERVER['DOCUMENT_ROOT'] . '/include/otherfile.php';1

require_once $_SERVER['DOCUMENT_ROOT'] . '/include/otherfile.php';2

require_once $_SERVER['DOCUMENT_ROOT'] . '/include/otherfile.php';3

require_once $_SERVER['DOCUMENT_ROOT'] . '/include/otherfile.php';4

require_once $_SERVER['DOCUMENT_ROOT'] . '/include/otherfile.php';5

require_once $_SERVER['DOCUMENT_ROOT'] . '/include/otherfile.php';6

$_SERVER['DOCUMENT_ROOT'] . '/index.php'0

Phát ban ¶

7 năm trước

require_once $_SERVER['DOCUMENT_ROOT'] . '/include/otherfile.php';8

require_once $_SERVER['DOCUMENT_ROOT'] . '/include/otherfile.php';9

$_SERVER['DOCUMENT_ROOT'] . '/index.php'0

John Carty ¶

6 năm trước

require()1

require()2

$_SERVER['DOCUMENT_ROOT'] . '/index.php'0

Anon ¶

10 năm trước

require()4

Lỗi17191 tại Gmail Dot Com ¶

WADE. ¶

require()5

require()6

$_SERVER['DOCUMENT_ROOT'] . '/index.php'0

Rick Garcia ¶

jbezorg tại gmail dot com ¶

require()8

require()9

form.php00

form.php01

form.php02

$_SERVER['DOCUMENT_ROOT'] . '/index.php'0

4 năm trước

Ray.paseur thường sử dụng gmail ¶

form.php04

form.php05

form.php06

$_SERVER['DOCUMENT_ROOT'] . '/index.php'0

8 năm trước

Ray.paseur thường sử dụng gmail ¶

form.php08

form.php09

form.php10

form.php11

form.php12

form.php13

form.php14

8 năm trước

Anonphpuser ¶

form.php15

24 ngày trước

splayer ¶

form.php16

form.php17

$_SERVER['DOCUMENT_ROOT'] . '/index.php'0

11 năm trước

14 năm trước

form.php19

form.php20

form.php21

form.php22

form.php23

Phát ban ¶

7 năm trước

form.php24

form.php25

form.php26

form.php27

form.php28

form.php29

$_SERVER['DOCUMENT_ROOT'] . '/index.php'0

John Carty ¶

6 năm trước

form.php31

form.php32

form.php33

form.php34

form.php35

form.php36

$_SERVER['DOCUMENT_ROOT'] . '/index.php'0

Anon ¶

7 năm trước

form.php38

form.php39

form.php40

form.php41

John Carty ¶

14 năm trước

form.php42

form.php43

$_SERVER['DOCUMENT_ROOT'] . '/index.php'0

Phát ban ¶

7 năm trước

form.php45

form.php46

form.php47

John Carty ¶

Làm thế nào có thể truy cập tệp từ một thư mục khác trong PHP?

Để truy cập gốc, hãy bắt đầu đường dẫn của bạn bằng "/". Nếu bạn muốn đi lên một thư mục từ nơi bạn hiện đang ở, ví dụ: từ/x/a/to/x/bạn có thể sử dụng "../". Nếu bạn muốn quay lại hai thư mục (ví dụ: từ/x/a/to/), bạn có thể sử dụng "../../" (chứ không phải là ".../" mà bạn đã đề cập).. If you want to go up one directory from where you are currently, e.g. from /x/a/ to /x/ you could use "../". If you want to go back up two directories (e.g. from /x/a/ to /) you could use "../../" (rather than ".../" which you mentioned).

Làm thế nào chúng ta sử dụng bao gồm () và yêu cầu () hàm trong PHP?

Các câu lệnh bao gồm và yêu cầu là giống hệt nhau, ngoại trừ khi thất bại: yêu cầu sẽ tạo ra một lỗi nghiêm trọng (e_compile_error) và dừng tập lệnh.Bao gồm sẽ chỉ tạo ra một cảnh báo (e_warning) và tập lệnh sẽ tiếp tục.require will produce a fatal error (E_COMPILE_ERROR) and stop the script. include will only produce a warning (E_WARNING) and the script will continue.

Làm thế nào để yêu cầu_once hoạt động trong PHP?

Từ khóa Yêu cầu_once được sử dụng để nhúng mã PHP từ một tệp khác.Nếu không tìm thấy tệp, một lỗi nghiêm trọng sẽ được ném và chương trình dừng lại.Nếu tệp đã được bao gồm trước đó, câu lệnh này sẽ không bao gồm nó một lần nữa.. If the file is not found, a fatal error is thrown and the program stops. If the file was already included previously, this statement will not include it again.

Làm thế nào để lưu tệp trong thư mục cụ thể trong PHP?

PHP $ target_path = "hình ảnh/";$ target_path = $ target_path.basename ($ _files ['userFile'] ['name']);Move_upLoaded_File ($ _Files ['userFile'] ['tmp_name'], $ target_path);?> Khi tệp (hình ảnh) được lưu tại đường dẫn được chỉ định ... điều gì sẽ xảy ra nếu tôi muốn lưu tệp với một số tên mong muốn ....$target_Path = "images/"; $target_Path = $target_Path. basename( $_FILES['userFile']['name'] ); move_uploaded_file( $_FILES['userFile']['tmp_name'], $target_Path ); ?> when the file(image) is saved at the specified path... WHAT if i want to save the file with some desired name....