Hướng dẫn dùng php __dir__ trong PHP

Tôi đã tìm cách sử dụng một biến được thực hiện trong biến HTDOCS gốc của Apache _DIR_ và có thể bao gồm các tập lệnh khác chứa dữ liệu nhạy cảm như thông tin đăng nhập cơ sở dữ liệu ngồi bên ngoài nó. Tôi đã đấu tranh một chút thử các tùy chọn khác nhau nhưng dưới đây đang hoạt động rất tốt.

Nội dung chính

  • Giới thiệu về hằng số ma thuật PHP __dir__
  • PHP đơn giản __dir__example
  • Tại sao sử dụng Php __dir__
  • require_once(DIR.'/file_folder_inside/apache's_htdocs/some-file.php'); 3 chứa mã của phần chân trang. Nó cũng cho thấy giá trị của hằng số define('DIR', __DIR__); 0:
  • __ Tệp __ trong PHP là gì?
  • Dirname __ dir __ là gì?
  • Dirname (__ tệp __) trong PHP là gì?
  • Làm cách nào để quay lại thư mục gốc trong PHP?

Nội phân chính

  • Giới thiệu về hằng số ma thuật PHP __dir__
  • PHP đơn giản __dir__example
  • Tại sao sử dụng Php __dir__
  • __ Tệp __ trong PHP là gì?
  • Dirname __ dir __ là gì?
  • Dirname (__ tệp __) trong PHP là gì?
  • Làm cách nào để quay lại thư mục gốc trong PHP?

Đầu tiên, trong cấu hình máy chủ ảo Apache của tôi, tôi đã đặt/bao gồm một đường dẫn Linux đầy đủ đến HTDOC của Apache (bạn có thể thêm nhiều đường dẫn bằng cách nối thêm ở cuối:/path/to/thư mục/):

php_value include_path          ".:/var/www/mywebsite.ext/uat/htdocs"

Sau đó, trong .htacess được lưu trữ trong gốc htdocs của Apache (và git repo):

php_value auto_prepend_file     "globals.php"

Cả hai điều trên có thể được đặt trong .htacess mặc dù nó sẽ không hoạt động tốt cho nhiều môi trường như dev, uat, đặc biệt là sản xuất khi sử dụng git repo.

Trong tệp Globals.php của tôi bên trong HTDOCS của Apache, tôi đã xác định một biến có tên là DIR được sử dụng toàn cầu bởi các tập lệnh PHP PHP trên toàn cầu:

define('DIR', __DIR__);

Sau đó, trong mỗi tệp AM hiện có thể bao gồm/yêu cầu các tệp cần thiết một cách linh hoạt:

require_once(DIR.'/file_folder_inside/apache's_htdocs/some-file.php');

Biến dir sẽ luôn giải quyết thành /var/www/mywebsite.ext/uat/htdocs bất kể ở đâu trong cây tôi gọi nó trong ví dụ trên sản xuất

/var/www/mywebsite.ext/uat/htdocs/file_folder_inside/apache's_htdocs/some-file.php.

Bây giờ, tôi đang tìm cách truy cập một tệp PHP đang ngồi bên ngoài thư mục gốc HTDOCS của Apache của tôi, điều này cũng dễ dàng đạt được bằng cách sử dụng:

require_once(DIR.'/../apache's_htdocs_parent_folder/some-file-stored-outside-htdocs-eg-snesitive-credentials.php');

Tóm tắt: Trong hướng dẫn này, bạn sẽ tìm hiểu về cách sử dụng hằng số ma thuật PHP

define('DIR', __DIR__);
0 khi bao gồm một tệp PHP.: in this tutorial, you’ll learn about how to use the PHP

define('DIR', __DIR__);
0 magic constant when including a PHP file.

Giới thiệu về hằng số ma thuật PHP __dir__

PHP đơn giản __dir__example

Tại sao sử dụng Php __dir__

__ Tệp __ trong PHP là gì?

PHP đơn giản __dir__example

Tại sao sử dụng Php __dir__

. ├── inc │ ├── footer.php │ └── header.php └── index.php

Code language: CSS (css)

__ Tệp __ trong PHP là gì?

"en"> "UTF-8"> "viewport" content="width=device-width, initial-scale=1.0"> PHP <span>__DIR__</span> Demo

Code language: PHP (php)

Dirname __ dir __ là gì?

Dirname (__ tệp __) trong PHP là gì?

Làm cách nào để quay lại thư mục gốc trong PHP?

require 'inc/header.php' ?>

Home

echo __DIR__ ?>

require 'inc/footer.php' ?>

Code language: PHP (php)

Đầu tiên, trong cấu hình máy chủ ảo Apache của tôi, tôi đã đặt/bao gồm một đường dẫn Linux đầy đủ đến HTDOC của Apache (bạn có thể thêm nhiều đường dẫn bằng cách nối thêm ở cuối:/path/to/thư mục/):

php_value auto_prepend_file     "globals.php"
0

Sau đó, trong .htacess được lưu trữ trong gốc htdocs của Apache (và git repo):

Tại sao sử dụng Php __dir__

__ Tệp __ trong PHP là gì?

php_value auto_prepend_file     "globals.php"
1

Dirname __ dir __ là gì?

php_value auto_prepend_file     "globals.php"
2

Dirname (__ tệp __) trong PHP là gì?

php_value auto_prepend_file     "globals.php"
3

Làm cách nào để quay lại thư mục gốc trong PHP?

php_value auto_prepend_file     "globals.php"
4

Đầu tiên, trong cấu hình máy chủ ảo Apache của tôi, tôi đã đặt/bao gồm một đường dẫn Linux đầy đủ đến HTDOC của Apache (bạn có thể thêm nhiều đường dẫn bằng cách nối thêm ở cuối:/path/to/thư mục/):

php_value auto_prepend_file     "globals.php"
5

Sau đó, trong .htacess được lưu trữ trong gốc htdocs của Apache (và git repo):

Cả hai điều trên có thể được đặt trong .htacess mặc dù nó sẽ không hoạt động tốt cho nhiều môi trường như dev, uat, đặc biệt là sản xuất khi sử dụng git repo.

Trong tệp Globals.php của tôi bên trong HTDOCS của Apache, tôi đã xác định một biến có tên là DIR được sử dụng toàn cầu bởi các tập lệnh PHP PHP trên toàn cầu:

Sau đó, trong mỗi tệp AM hiện có thể bao gồm/yêu cầu các tệp cần thiết một cách linh hoạt:

php_value auto_prepend_file     "globals.php"
7

Biến dir sẽ luôn giải quyết thành /var/www/mywebsite.ext/uat/htdocs bất kể ở đâu trong cây tôi gọi nó trong ví dụ trên sản xuất

php_value auto_prepend_file     "globals.php"
8

Bây giờ, tôi đang tìm cách truy cập một tệp PHP đang ngồi bên ngoài thư mục gốc HTDOCS của Apache của tôi, điều này cũng dễ dàng đạt được bằng cách sử dụng:

Tóm tắt: Trong hướng dẫn này, bạn sẽ tìm hiểu về cách sử dụng hằng số ma thuật PHP

define('DIR', __DIR__);
0 khi bao gồm một tệp PHP.

Php 5.3 đã giới thiệu một hằng số ma thuật mới gọi là

define('DIR', __DIR__);
0. Khi bạn tham chiếu
define('DIR', __DIR__);
0 bên trong một tệp, nó sẽ trả về thư mục của tệp.
define('DIR', __DIR__);
0 không bao gồm một dấu gạch chéo, ví dụ,
define('DIR', __DIR__);
4 hoặc
define('DIR', __DIR__);
5 ngoại trừ nó là một thư mục gốc.

Khi bạn sử dụng

define('DIR', __DIR__);
0 bên trong một bao gồm,
define('DIR', __DIR__);
0 sẽ trả về thư mục của tệp được bao gồm.
php_value auto_prepend_file     "globals.php"
9

Về mặt kỹ thuật,

define('DIR', __DIR__);
0 tương đương với
define('DIR', __DIR__);
9. Tuy nhiên, sử dụng
define('DIR', __DIR__);
0 ngắn gọn hơn so với
define('DIR', __DIR__);
9.

Giả sử bạn có cấu trúc thư mục sau:

require_once(DIR.'/file_folder_inside/apache's_htdocs/some-file.php');
2 chứa mã của phần tiêu đề:

require_once(DIR.'/file_folder_inside/apache's_htdocs/some-file.php'); 3 chứa mã của phần chân trang. Nó cũng cho thấy giá trị của hằng số define('DIR', __DIR__); 0:

  • ________số 8
  • Index.php bao gồm cả tệp
    require_once(DIR.'/file_folder_inside/apache's_htdocs/some-file.php');
    
    2 và
    require_once(DIR.'/file_folder_inside/apache's_htdocs/some-file.php');
    
    3. Nó cũng cho thấy giá trị của hằng số
    define('DIR', __DIR__);
    
    0:

Sau đây cho thấy đầu ra trên trình duyệt web:

__ Tệp __ trong PHP là gì?

__File__ chỉ đơn giản là tên của tệp hiện tại.RealPath (Dirname (__ File__)) có tên của thư mục mà tệp đang ở - về bản chất, thư mục mà ứng dụng được cài đặt.the name of the current file. realpath(dirname(__FILE__)) gets the name of the directory that the file is in -- in essence, the directory that the app is installed in.

Dirname __ dir __ là gì?

__Dir__: Thư mục của tệp.Nếu được sử dụng bên trong một bao gồm, thư mục của tệp đi kèm được trả về.Điều này tương đương với dirname (__ File__).Tên thư mục này không có dấu gạch chéo trừ khi đó là thư mục gốc.The directory of the file. If used inside an include, the directory of the included file is returned. This is equivalent to dirname(__FILE__) . This directory name does not have a trailing slash unless it is the root directory.

Dirname (__ tệp __) trong PHP là gì?

Dirname (__ File__) cho phép bạn có được một đường dẫn tuyệt đối (và do đó tránh tìm kiếm đường dẫn bao gồm) mà không cần dựa vào thư mục làm việc là thư mục trong đó bootstrap.php cư trú.(Lưu ý: Vì Php 5.3, bạn có thể sử dụng __dir__ thay cho dirname (__ File__).)allows you to get an absolute path (and thus avoid an include path search) without relying on the working directory being the directory in which bootstrap. php resides. (Note: since PHP 5.3, you can use __DIR__ in place of dirname(__FILE__) .)

Làm cách nào để quay lại thư mục gốc trong PHP?

Hàm chroot () thay đổi thư mục gốc của quy trình hiện tại thành thư mục và thay đổi thư mục làm việc hiện tại thành "/".chroot() function changes the root directory of the current process to directory, and changes the current working directory to "/".