Cách chạy file php trên win xp. Thực thi tập tin PHP

Tôi sẽ ngay lập tức bảo lưu rằng mọi thứ sẽ được thảo luận trong bài viết này chỉ áp dụng cho các hệ điều hành giống Unix và sẽ không hoạt động trong Windows. Đây chính xác là những gì chúng ta đang nói đến thay thế cho krona. Những người yêu thích Windows không may mắn sẽ phải liên tưởng đến "Bảng kế hoạch" - Ma thuật đen họ sẽ không thể truy cập được :) Ngoài ra, bạn sẽ cần truy cập ssh và lý tưởng nhất là - truy cập các tập lệnh php vào dòng lệnh.

Chương trình daemon là gì và cách viết daemon trong PHP

Daemon(daemon, dæmon, vị thần Hy Lạp cổ đại δαίμων) - chương trình máy tính trong các hệ thống lớp UNIX, do chính hệ thống đó khởi chạy và chạy trong lý lịch không có sự tương tác trực tiếp của người dùng. Daemon thường khởi động trong quá trình khởi động hệ thống.

Áp dụng cho PHP, nó là một tập lệnh có thể tự chạy, không dừng và không có sự tương tác của người dùng. Làm thế nào để có được một kịch bản như vậy? Thực ra, rất đơn giản, bạn chỉ cần phá vỡ một trong những quy tắc lập trình đầu tiên mà họ dạy ở trường, và tạo một vòng lặp vô hạn:

// Để chương trình có thể hoạt động liên tục, đơn giản là nó phải hoạt động liên tục;) while(1) ( // Daemon code sẽ nằm ở đây // ... // Thời gian Daemon ngủ giữa các lần lặp (phụ thuộc vào nhu cầu của hệ thống) ngủ(1); )

Đoạn mã đơn giản đến không tưởng vẫn đặt ra một số câu hỏi. Làm thế nào để khởi động nó? Làm thế nào để theo dõi việc thực hiện nó? Làm thế nào để ngăn chặn anh ta?

Làm thế nào để khởi động một daemon php

Nói chung, bạn chạy các tập lệnh PHP như thế nào? Nếu đây là một ứng dụng web thì sử dụng trình duyệt và máy chủ web. Nhưng tùy chọn này không phù hợp vì chúng ta đang xử lý một tập lệnh vô tận và thời gian thực thi của tập lệnh bị giới hạn bởi lệnh max_execution_time V. php.ini. Do đó, một tập lệnh vô tận phải được chạy qua bảng điều khiển, vì khi đó thời gian tối đa sự hoàn thành của nó không được tính đến. Lệnh khởi động daemon trông giống như thế này:

Php -f /path/to/your/daemon.php &

khởi động thủ công nó phải được nhập vào thiết bị đầu cuối ssh (PuTTY, WinSCP, v.v.) và được hệ thống khởi chạy khi khởi động - vào tệp khởi động tương ứng (vị trí và tên của tệp phụ thuộc vào hệ điều hành). Xin lưu ý rằng bảng điều khiển tập lệnh daemon chạy ở chế độ nền, mà không yêu cầu người dùng phải chờ hoàn thành (xét cho cùng, tập lệnh là vô tận). Chính khả năng chạy một tiến trình ở chế độ nền là lý do khiến phương pháp tôi đang mô tả không phù hợp với máy chủ Windows. Sau khi khởi chạy, bảng điều khiển sẽ hiển thị xử lý ID daemon của chúng tôi, cái gọi là PID.

Theo dõi và ngăn chặn ma quỷ

Bạn có thể kiểm tra xem tiến trình daemon có đang chạy hay không bằng cách mở danh sách các tiến trình trong hệ thống:

PS-aux

Việc tìm kiếm một daemon trong danh sách các tiến trình thật dễ dàng, bằng cả lệnh khởi chạy và bằng PID:

NGƯỜI DÙNG PID% CPU% MEM VSZ RSS TTY STAT THỜI GIAN BẮT ĐẦU LỆNH ... root 22193 0.1 0.2 393180 72132 ? S 24 tháng 4 5:05 php -f /path/to/your/daemon.php &

Dừng quá trình daemon bạn có thể thực hiện theo cách tương tự như bất kỳ quy trình nào khác:

Giết xxxx

Trong ví dụ đã cho, xxxx là PID, mã định danh quy trình.

Điều đáng chú ý là điều này không dừng lại mà là "giết chết" tiến trình daemon. Thực tế là kịch bản sẽ bị gián đoạn ở bất cứ đâu, điều này không phải lúc nào cũng phù hợp với tất cả mọi người. Về lý thuyết, trong trường hợp này, daemon phải được dừng ở đâu đó giữa các lần lặp của nó và không còn ở bảng điều khiển nữa. Ví dụ: chúng ta có thể tạo yêu cầu dừng tập lệnh trong cơ sở dữ liệu hoặc trong một số tệp trên máy chủ và giữa các lần lặp của daemon, hãy kiểm tra xem yêu cầu đó có tồn tại hay không. Nếu ứng dụng được tìm thấy, dừng vòng lặp bằng lệnh break.

Hệ thống điều khiển quỷ

Điều gì sẽ xảy ra nếu bạn cần tạo và theo dõi nhiều daemon cùng một lúc? Ví dụ: trong dịch vụ CheckTrust được đề cập ở trên, > 30 tập lệnh như vậy có liên quan đến việc xử lý dữ liệu và dự án của người dùng. Việc tạo và giám sát chúng từ bảng điều khiển rất bất tiện - cần có giao diện thân thiện hơn với người dùng.

Tuyệt vời phải không? :) Chỉ để tạo ra một hệ thống như vậy, thật tuyệt nếu có quyền truy cập vào dòng lệnh từ php. Mỗi daemon là một mục trong cơ sở dữ liệu, dựa vào đó bạn có thể nhập lệnh để khởi chạy nó, cũng như PID của quy trình. Do đó, có thể khởi động, dừng và theo dõi trạng thái của daemon trực tiếp từ giao diện web. Kết quả là, bản thân các daemon hóa ra là một phần của ứng dụng bảng điều khiển và hệ thống quản lý chúng đã trở thành một phần của ứng dụng web.

Vì hệ thống hiển thị ở trên được thiết kế hoàn toàn dành cho CheckTrust nên tôi sẽ không hiển thị mã của nó. Nhưng tôi sẽ sao chép mã ở đây lớp phpđể quản lý quy trình, mà tôi đã sử dụng khi tạo nó:

<?php /* * Process.php * Một cách dễ dàng để theo dõi các quy trình bên ngoài. * Đã từng muốn thực thi một tiến trình trong php, nhưng bạn vẫn muốn kiểm soát phần nào quá trình này? Vâng... Đây là một cách để làm điều đó. * @khả năng tương thích: Chỉ dành cho Linux. (Windows không hoạt động). * @author: Peec */ class Process( Private $pid; Private $command; public function __construct($cl=false)( if ($cl != false)( $this->command = $cl; $this-> runCom(); ) ) hàm riêng runCom())( $command = "nohup ".$this->command." > /dev/null 2>&1 & echo $!"; exec($command ,$op); $ this->pid = (int)$op; ) hàm công khai setPid($pid)( $this->pid = $pid; ) hàm công khai getPid())( return $this->pid; ) trạng thái hàm công khai( ))( $command = "ps -p ".$this->pid; exec($command,$op); if (!isset($op))return false; else return true; ) hàm công khai start()) ( if ($ this->command != "")$this->runCom(); else return true; ) public function stop())( $command = "kill ".$this->pid; exec($command ); if ($ this->status() == false)trả về true; nếu không thì trả về false; ) ) ?>

Hạn chế duy nhất của lớp này là tôi đã mô tả lớp của bạn - nó dừng các quá trình sử dụng phương thức kill, nhưng đối với tôi bây giờ thế là đủ rồi :) Và đây là một ví dụ về việc sử dụng nó:

// Khởi động daemon và nhận được PID(giả sử pid được lưu ở đâu đó sau khi khởi động) $command = ""; $process = Quy trình mới($command); $processId = $process->getPid(); // Kiểm tra trạng thái daemon $process = new Process(); $process->setPid($processId); $status = $process->status(); // trả về đúng hoặc sai // Dừng daemon $process = new Process(); $process->setPid($processId); $stopped = $process->stop(); // trả về đúng hoặc sai

Tóm lại, tôi muốn nói rằng đây không phải là cách duy nhất có thể và hoàn toàn có thể không phải là cách triển khai daemon tối ưu nhất trong PHP. Ví dụ: có một phần mở rộng PHP PCNTL thú vị dành cho các trình nền đa quy trình. Một số thậm chí có thể nói rằng đối với ứng dụng bảng điều khiển Có nhiều ngôn ngữ lập trình hoàn toàn khác nhau. Nhưng dù người ta có thể nói gì đi nữa, việc thực hiện này không thể phủ nhận thuận lợi:

  • Cô ấy đơn giản giống như một chiếc dép. Con quỷ chỉ là một vòng lặp vô tận, đơn giản hơn nhiều.
  • Nó tương thích với các ứng dụng web- là một phần của dịch vụ web, các trình nền của tôi dựa vào các phát triển hiện có, sử dụng cùng các mô hình dữ liệu, các lớp và phương pháp làm việc với chúng.
  • Cô ta làm việc! Nghiêm túc mà nói - chúng tôi đã có một số daemon chạy được vài tháng nay và được viết tốt nên không trở nên ngu ngốc, không bị treo và không tiêu tốn bộ nhớ.

Cảm ơn bạn đã quan tâm :) Nếu ai có thắc mắc hoặc ý kiến ​​gì, tôi sẽ sẵn lòng trả lời trong phần bình luận.

Có ba trong SAPI CLI những cách khác chạy mã PHP:

    Chỉ trỏ tập tin cụ thểđể bắt đầu.

    $ php my_script.php $ php -f my_script.php

    Cả hai phương pháp (với việc chỉ định tùy chọn -f hoặc không) sẽ chạy tệp my_script.php. Bạn có thể chọn bất kỳ tệp nào để chạy và tập lệnh PHP của bạn không cần phải có phần mở rộng .php và có thể có bất kỳ tên và phần mở rộng nào bạn muốn.

    Bình luận:

    Nếu bạn cần truyền đối số cho tập lệnh của mình thì khi sử dụng tùy chọn -fđối số đầu tiên nên là -- .

  1. Truyền mã PHP trực tiếp trên dòng lệnh.

    $ php -r "print_r(get_d xác định_constants());"

    Bạn cần đặc biệt cẩn thận khi sử dụng phương pháp này vì việc thay thế biến shell có thể xảy ra khi sử dụng dấu ngoặc kép.

    Bình luận:

    Vui lòng đọc kỹ ví dụ, không có thẻ mở hoặc thẻ đóng trong đó! Lựa chọn -r nó chỉ không cần chúng. Việc sử dụng chúng sẽ dẫn đến lỗi trình phân tích cú pháp.

  2. Truyền mã PHP đang chạy thông qua đầu vào tiêu chuẩn ( stdin).

    Điều này cung cấp khả năng mạnh mẽ để tự động tạo mã PHP và đưa mã đó vào tệp khởi động, như trong ví dụ (giả mạo) này:

    $some_application | some_filter | php | sắp xếp -u > Final_output.txt

Bạn không thể kết hợp bất kỳ cách nào trong ba cách này để chạy mã.

Giống như bất kỳ ứng dụng bảng điều khiển nào khác, tệp nhị phân tập tin PHP nhận các đối số, nhưng tập lệnh PHP của bạn cũng có thể nhận các đối số. PHP không giới hạn số lượng đối số được truyền cho tập lệnh của bạn (giao diện điều khiển shell đặt một số ngưỡng cho số lượng ký tự có thể được truyền; giới hạn này thường là đủ). Các đối số được truyền có sẵn trong mảng toàn cục $argv . Chỉ mục đầu tiên (không) luôn chứa tên của tập lệnh được gọi từ dòng lệnh. Xin lưu ý rằng nếu mã được gọi nhanh chóng từ dòng lệnh bằng tùy chọn -r, giá trị của $argv sẽ chỉ là dấu gạch nối ( - ). Điều này cũng đúng với mã được dẫn từ STDIN.

Biến toàn cục thứ hai được đăng ký là $argc, chứa số phần tử trong mảng $argv ((và Không số lượng đối số được truyền cho tập lệnh).

Nếu các đối số bạn truyền không bắt đầu bằng ký tự - , Cái đó vấn đề đặc biệt không nên có. Bằng cách chuyển một đối số cho tập lệnh bắt đầu bằng - sẽ tạo ra vấn đề vì PHP sẽ quyết định rằng nó sẽ tự xử lý nó. Để ngăn chặn hành vi này, hãy sử dụng dấu phân cách danh sách đối số -- . Khi dấu phân cách này được PHP đọc, tất cả các đối số tiếp theo sẽ được chuyển nguyên vẹn vào tập lệnh của bạn.

# Lệnh này sẽ không chạy mã này, nhưng sẽ hiển thị thông tin về cách sử dụng PHP $ php -r "var_dump($argv);" -h Cách sử dụng: php [-f] [...] # Lệnh này sẽ chuyển đối số "-h" tới tập lệnh của bạn, ngăn không cho hiển thị trợ giúp PHP $ php -r "var_dump($argv);" -- -h mảng(2) ( => string(1) "-" => string(2) "-h" )

Tuy nhiên, trên hệ thống Unix có một cách khác để sử dụng PHP cho các tập lệnh console. Bạn có thể viết một đoạn script có dòng đầu tiên bắt đầu bằng #!/usr/bin/php(nếu cần, hãy thay thế đường dẫn chính xác tới tập tin nhị phân PHP CLI). Sau dòng này, bạn có thể đặt mã PHP thông thường, kèm theo phần mở và đóng Thẻ PHP. Khi bạn đặt thuộc tính khởi chạy chính xác trên tệp (ví dụ: kiểm tra chmod +x), tập lệnh của bạn có thể được chạy dưới dạng bảng điều khiển thông thường hoặc tập lệnh Perl:

Ví dụ #1 Chạy tập lệnh PHP dưới dạng tập lệnh console

#!/usr/bin/php
var_dump ($argv);
?>

Giả sử rằng tệp này được gọi là test và nằm trong thư mục hiện tại, chúng ta có thể thực hiện như sau:

$ chmod +x test $ ./test -h -- foo array(4) ( => string(6) "./test" => string(2) "-h" => string(2) "--" => chuỗi(3) "foo" )

Như bạn có thể thấy, trong trường hợp này bạn không cần phải lo lắng về việc truyền các tham số bắt đầu bằng - .

Tệp thực thi PHP có thể được sử dụng để chạy các tập lệnh PHP độc lập với máy chủ web. Trong trường hợp bạn làm việc ở Hệ thống giống Unix, bạn cần thêm một dòng đầu tiên đặc biệt vào tất cả các tập lệnh và làm cho chúng có thể thực thi được để cho biết chương trình nào sẽ xử lý các tập lệnh này. Trên nền tảng Windows, bạn có thể chỉ định trình xử lý php.exe cho các tệp có phần mở rộng .php hoặc tạo tệp bó (.bat) để chạy tập lệnh bằng PHP. Dòng được thêm vào đầu tập lệnh dành cho hệ thống Unix không ảnh hưởng đến hoạt động của chúng trên hệ điều hành Windows, do đó bạn có thể tạo tập lệnh đa nền tảng. Dưới đây là một tập lệnh ví dụ đơn giản được thực thi từ dòng lệnh:

Ví dụ #2 Tập lệnh được thiết kế để chạy từ dòng lệnh (script.php)

#!/usr/bin/php

If ($argc != 2 || in_array ($argv [ 1 ], array("--help" , "-help" , "-h" , "-?" ))) (
?>

Đây là tập lệnh bảng điều khiển PHP có một đối số.

Cách sử dụng:

) khác (
echo $argv [ 1 ];
}
?>

Trong ví dụ trên, chúng tôi sử dụng dòng đầu tiên đặc biệt để cho biết rằng tập lệnh này cần được chạy bằng PHP. Vì chúng tôi đang làm việc với phiên bản CLI nên tiêu đề HTTP sẽ không được hiển thị. Khi viết các ứng dụng bảng điều khiển bằng PHP, bạn có sẵn hai biến: $argc và $argv . Đầu tiên là số lượng đối số được truyền cộng với một (tên của tập lệnh đang được thực thi). Thứ hai là một mảng các đối số được truyền, bắt đầu bằng tên tập lệnh có chỉ số 0 ($argv).

Cũng trong ví dụ trên chúng ta kiểm tra số lượng đối số được truyền. Trong trường hợp có ít nhiều một trong số chúng và trong trường hợp đối số được thông qua là --giúp đỡ , -giúp đỡ , -h hoặc -? , chúng tôi hiển thị thông báo trợ giúp bằng cách thay thế tên của tập lệnh đang được thực thi động. Nếu không, chúng ta chỉ cần in đối số nhận được.

Nếu bạn muốn chạy ví dụ trên trên hệ thống Unix, bạn sẽ cần làm cho nó có thể thực thi được và chỉ cần chạy nó từ bảng điều khiển script.php echothis hoặc script.php -h. Trên hệ thống Windows, bạn có thể tạo cho việc này tập tin hàng loạt:

Ví dụ #3 Tệp hàng loạt để chạy tập lệnh PHP từ dòng lệnh (script.bat)

@echo TẮT "C:\php\php.exe" script.php %*

Giả sử tập lệnh có tên script.php và đường dẫn đầy đủ đến php.exe CLI là C:\php\php.exe , tệp bó đã cho sẽ chạy tập lệnh với các tham số bạn đã truyền: script.bat echothis hoặc script.bat -h.

Bạn cũng có thể muốn kiểm tra tiện ích mở rộng Readline, tiện ích mở rộng này có thể được sử dụng để nâng cao tập lệnh bảng điều khiển PHP của bạn.

Xin chào tất cả mọi người. Hôm nay tôi bắt đầu viết ở chuyên mục mới - PHP! Về cơ bản thì đây sẽ là những kiến ​​thức cơ bản và cơ bản nhất của ngôn ngữ này. Và trước tiên, tôi sẽ cho bạn biết cách mở tệp php trong trình duyệt?

Tại sao php không mở được như html?

Đây là vấn đề: php là ngôn ngữ máy chủ. Html và javascript là phía máy khách. Theo đó, để thực thi mã PHP, bạn cần khởi động máy chủ, chỉ trong trường hợp này mới có thể mở được tệp. Thực ra chỉ có 2 cách:

  1. Tạo một trang web trên dịch vụ lưu trữ thực sự nơi bạn sẽ thử nghiệm với PHP
  2. Tạo nên Máy chủ cục bộ, nơi bạn có thể tạo miễn phí số lượng không giới hạn các trang web trên máy tính của bạn và thử nghiệm bao nhiêu tùy thích.

Và tôi thực sự khuyên bạn nên lựa chọn thứ hai. Theo đó, trước khi bắt đầu mở tệp php, bạn cần cài đặt một máy chủ như vậy. Đừng nghĩ rằng việc đó khó - bạn có thể làm được chỉ trong vài phút. Trong số các máy chủ địa phương nổi tiếng nhất dành cho các cửa sổ Tôi có thể nhấn mạnh những điều sau:

  1. Máy chủ mở
  2. Denwer
  3. Xammp

Cá nhân tôi chỉ làm việc với Denver. Tôi có thể viết riêng về cách cài đặt nó, nhưng tôi quyết định rằng không có gì tốt hơn tài liệu chính thức nó không thể đến từ các nhà phát triển. Về vấn đề này, nó đây. Bạn có thể tìm thấy rất nhiều bài viết và video trên Internet về việc cài đặt các máy chủ khác.

Làm cách nào để mở tệp php sau khi cài đặt máy chủ?

Máy chủ đã được cài đặt chưa? Tuyệt vời, giờ bạn đã có mọi thứ để chạy file php. Trên thực tế, để thực hiện việc này, máy chủ cục bộ của bạn phải đang chạy. Đây là lối tắt bạn nên có trên màn hình của mình:

Bây giờ bạn cần tạo một trang web mới cho máy chủ cục bộ của mình. Một lần nữa, tôi chỉ trình bày cách thực hiện việc này ở Denver. Chúng ta hãy đi đến thư mục gốc máy chủ, ở đây chúng tôi tìm thấy thư mục trang chủ. Nó sẽ chứa tất cả các trang web của bạn. Cần tạo thư mục mới, tên của nó sẽ là tên của trang web mới. Trong thư mục đã tạo bạn phải tạo thư mục www, không có điều này sẽ không có gì hoạt động. Giai đoạn cuối— ném các tệp php cần thiết (cần mở) vào thư mục www. Nó là gốc của trang web.

Cách mở file php khác với cách mở html. Bạn không thể mở chúng trực tiếp trong trình duyệt, trong trường hợp đó bạn sẽ chỉ nhìn thấy mã. Để mở một tệp, bạn cần phải đăng ký trang web chứa tệp đó, cũng như đường dẫn đến tệp trên trang web. Tôi muốn nhấn mạnh rằng nếu bạn chỉ cần nhập tên của trang web (không có http://, nhưng có dấu gạch chéo), máy chủ sẽ khởi chạy index.php, nếu có.

Ví dụ:
Tôi đã tạo một thư mục phptest trên máy chủ cục bộ, có www trong đó và sau đó tải nó lên đó tập tin cần thiết. Tuyệt vời, bây giờ bạn cần khởi động lại Denver nếu nó đang chạy. Nếu không, chỉ cần chạy nó. Bây giờ trong dòng trình duyệt bạn cần gõ: phptest/

Vì vậy, bạn có được trang chủđịa điểm. Tệp này phải được gọi là index.php. Ví dụ: tôi đã tạo một máy tính bằng php, đặt nó vào phptest có tên là calc.php. Tôi viết địa chỉ trước tập tin này:

Tuyệt vời, máy tính đã mở. Bạn có thể kiểm tra ứng dụng.

Làm thế nào để không mở php?

Nó không cần phải được thực hiện như các tệp html. Tức là không thông qua "Để mở bằng""Trình duyệt". Vì vậy bạn sẽ chỉ nhìn thấy nguồn tập tin, nhưng không có trường hợp nào là kết quả thực thi của nó.

Thế là xong, chúng ta đã tìm ra cách mở tệp php trong trình duyệt. Chỉ cần cài đặt và định cấu hình máy chủ cục bộ một lần là đủ và trong tương lai, bạn sẽ có thể mở các tệp có độ phân giải này mà không gặp bất kỳ sự cố nào. Đó là tất cả những gì tôi có cho ngày hôm nay. Tôi hy vọng mọi thứ đều suôn sẻ với bạn. Thấy bạn.

Bắt đầu với phiên bản 4.3, PHP hỗ trợ loại SAPI (Giao diện lập trình ứng dụng máy chủ) mới có tên CLI, có nghĩa là Dòng lệnh Giao diện. Đúng như tên gọi, mục đích chính của loại SAPI này là phát triển các ứng dụng shell (hoặc máy tính để bàn) bằng PHP. Có những khác biệt rất nhỏ giữa CLI SAPI và các SAPI khác, những khác biệt này sẽ được thảo luận sâu hơn trong chương này.

SAPI CLI lần đầu tiên được phát hành với PHP 4.2.0, nhưng hồi đó nó là một bản thử nghiệm và phải được kích hoạt rõ ràng bằng --enable-cli khi khởi động./configure. Kể từ PHP 4.3.0, SAPI CLI không còn mang tính thử nghiệm nữa và Luôn luônđược tích hợp và cài đặt dưới dạng tệp thực thi nhị phân php (được gọi là php.exe trên Windows).

Sự khác biệt đáng kể giữa CLI SAPI và các SAPI khác:

    Không giống như CGI SAPI, không có tiêu đề nào được ghi vào đầu ra.

    Mặc dù CGI SAPI có cách chặn các tiêu đề HTTP nhưng không có công tắc tương đương nào để kích hoạt chúng trong CLI SAPI.

    Có một số lệnh php.ini nhất định bị ghi đè trong CLI SAPI vì chúng không có ý nghĩa trong môi trường shell:

Bảng 24-1. Ghi đè chỉ thị php.ini
chỉ thịCLI SAPI - giá trị mặc địnhMột lời bình luận
html_errors SAI Có thể khá khó khăn để đọc một thông báo lỗi trong shell chứa đầy những thẻ HTML vô nghĩa đó, vì vậy giá trị mặc định của lệnh này là SAI .
ẩn_flush ĐÚNG VẬY Điều mong muốn là bất kỳ kết luận nào từ in() , tiếng vang() và company ngay lập tức được ghi vào đầu ra, thay vì được gửi đến bộ đệm nào đó. Bạn vẫn có thể sử dụng bộ đệm đầu ra nếu muốn làm việc với đầu ra tiêu chuẩn.
max_execution_time0 (không giới hạn) Vì khả năng vô hạn sử dụng PHP trong môi trường shell, không có thời gian thực hiện tối đa. Trong khi các ứng dụng được viết cho web thực thi trong chưa đầy một giây, thì các ứng dụng shell cố gắng hoàn thành càng lâu càng tốt.
đăng ký_argc_argv ĐÚNG VẬY Toàn cầu Biến PHP$argc (số lượng đối số, được truyền tới ứng dụng) và $argv (mảng đối số hiện tại) luôn được đăng ký và điền các giá trị thích hợp khi sử dụng SAPI CLI.

Ghi chú: Các lệnh này không thể được khởi tạo với giá trị khác với tệp cấu hình php.ini hoặc tập tin đặc biệt(nếu được chỉ định). Điều này có phần hạn chế vì các giá trị mặc định này được áp dụng sau khi tất cả các tệp cấu hình đã được phân tích cú pháp. Tuy nhiên, giá trị của chúng có thể được thay đổi trong thời gian chạy (điều này không có ý nghĩa đối với tất cả các lệnh khác, ví dụ: đối với register_argc_argv).

    Sẽ dễ dàng hơn để làm việc trong môi trường shell khi các hằng số sau được xác định:

    Bảng 24-2. Hằng số CLI cụ thể
    Không thay đổiSự miêu tả
    STDIN Đã mở luồng trong stdin. Nó bảo vệ người mở nó

    Bạn không cần phải đóng các luồng này một cách rõ ràng; PHP thực hiện việc này một cách tự động.

  • CLI SAPI Không thay đổi thư mục hiện tại thành thư mục của tập lệnh thực thi!

    Ví dụ cho thấy sự khác biệt giữa CGI SAPI:

    Khi nào nên sử dụng phiên bản CGI, đầu ra sẽ là:

    Điều này mang lại sự linh hoạt cao hơn khi viết các tiện ích dòng lệnh trong PHP.

    Ghi chú: CGI SAPI hỗ trợ hành vi CLI SAPI bằng cách sử dụng khóa chuyển -C khi chạy từ dòng lệnh.

  • Danh sách các tùy chọn dòng lệnh tập tin thực thi Bạn có thể lấy PHP bất cứ lúc nào bằng cách chạy PHP với khóa chuyển đổi -h:

    SAPI CLI có ba những cách khác nhận PHP-mã được thực thi:

    1. Yêu cầu PHP thực thi một tệp cụ thể.

      Phải đặc biệt cẩn thận khi thay thế các biến shell và sử dụng dấu ngoặc kép.

      Ghi chú: Hãy xem kỹ ví dụ, không có thẻ bắt đầu và thẻ kết thúc! Công tắc -r đơn giản là không cần chúng. Sử dụng chúng trong trong trường hợp này sẽ dẫn đến lỗi phân tích cú pháp.

    2. Cung cấp mã PHP để được thực thi thông qua đầu vào tiêu chuẩn (stdin).

      Điều này cho phép bạn tự động tạo mã PHP và chuyển nó sang tệp thực thi, như trong ví dụ (giả tạo) này:

      $some_application | some_filter | php | sắp xếp -u >final_output.txt

    Bạn không thể kết hợp ba phương pháp này khi thực thi mã.

    Như với bất kỳ ứng dụng shell nào, không chỉ bản thân PHP mà còn cả Tập lệnh PHP cũng chấp nhận lập luận. Số lượng đối số được truyền cho tập lệnh trong PHP không bị giới hạn (shell có giới hạn về số lượng ký tự được truyền).
    Các đối số được truyền cho tập lệnh của bạn có sẵn thông qua mảng $argv toàn cục. Chỉ số 0 luôn chứa tên của tập lệnh (là một ký tự - trong trường hợp mã PHP đến từ đầu vào tiêu chuẩn hoặc sử dụng chuyển đổi dòng lệnh -r).
    Biến toàn cục thứ hai được đăng ký là $argc, chứa số phần tử trong mảng $argv (và Không số lượng đối số được truyền cho tập lệnh).

    Nếu các đối số bạn muốn truyền vào tập lệnh không bắt đầu bằng ký tự dấu gạch nối (-), thì không có gì đặc biệt cần quan sát. Việc truyền một đối số bắt đầu bằng - vào tập lệnh sẽ gây ra vấn đề vì PHP cho rằng nó phải tự xử lý chúng. Để ngăn chặn điều này, hãy sử dụng -- làm dấu phân cách đối số danh sách. Khi đối số được phân tích cú pháp bằng PHP, mỗi đối số tiếp theo sẽ được chuyển đến tập lệnh của bạn ở trạng thái không thay đổi/không được phân tích cú pháp.

    Tuy nhiên, đây là một cách khác để sử dụng PHP cho shell script. Bạn có thể viết một tập lệnh có dòng đầu tiên bắt đầu bằng #!/usr/bin/php , theo sau là mã PHP thông thường nằm giữa thẻ bắt đầu và kết thúc PHP và các thuộc tính thực thi của tệp được đặt tương ứng. Bằng cách này, nó có thể được thực thi như một tập lệnh Shell hoặc Perl thông thường:

    Như bạn có thể thấy, bạn không phải làm gì đặc biệt khi truyền tham số cho tập lệnh bắt đầu bằng - .

    Bảng 24-3. Tùy chọn dòng lệnh
    Lựa chọnSự miêu tả
    -S

    Hiển thị cú pháp bằng màu sắc.

    Tùy chọn này sử dụng cơ chế phân tích nội bộ của tệp để tô màu cho nó. Phiên bản HTML và viết nó vào đầu ra tiêu chuẩn. Xin lưu ý rằng chỉ một khối […] thẻ HTML được tạo mà không có tiêu đề HTML.

    Ghi chú:

    -w

    Trưng bày văn bản gốc không có bình luận hoặc không gian.

    Ghi chú: Tùy chọn này không hoạt động cùng với tùy chọn -r.

    -f

    Phân tích cú pháp và thực thi tập tin này. Công tắc này là tùy chọn và có thể được bỏ qua. Chỉ cần cung cấp tên tệp để thực thi là đủ.

    -v

    Viết các phiên bản PHP, PHP SAPI và Zend vào đầu ra tiêu chuẩn, ví dụ:

    -Một

    Chạy PHP tương tác.

    -d

    Tùy chọn này cho phép bạn thiết lập Ý nghĩa đặc biệtđối với mỗi lệnh cấu hình được phép trong php.ini. Cú pháp là:

    -e

    Tạo thông tin mở rộng cho trình gỡ lỗi/trình biên dịch.

    -z

    Tải phần mở rộng Zend. Nếu chỉ có tên tệp được đưa ra, PHP sẽ cố tải phần mở rộng này từ đường dẫn mặc định hiện tại đến thư viện trên hệ thống của bạn (thường được chỉ định là /etc/ld.so.conf trên hệ thống Linux). Truyền tên tệp bằng đường dẫn tuyệt đối sẽ không sử dụng đường dẫn tìm kiếm hệ thống của thư viện. Tên tệp tương đối có thông tin thư mục sẽ yêu cầu PHP thử tải phần mở rộng liên quan đến thư mục hiện tại.

    -l

    Tùy chọn này cung cấp Một cách thuận tiện thực hiện kiểm tra cú pháp trên mã PHP này. Nếu thành công, văn bản Không phát hiện thấy lỗi cú pháp nào sẽ được ghi vào đầu ra tiêu chuẩn và mã trả về shell sẽ là 0 . Nếu thất bại, văn bản Lỗi phân tích cú pháp cùng với thông báo lỗi nội bộ của trình phân tích cú pháp sẽ được ghi vào đầu ra tiêu chuẩn và mã trả về của shell sẽ là 255 .

    Tùy chọn này sẽ không tìm thấy lỗi nghiêm trọng(như các hàm không xác định). Sử dụng -f nếu bạn cũng muốn kiểm tra các lỗi nghiêm trọng.

    Ghi chú: Tùy chọn này không hoạt động cùng với -r.

    -m

    Sử dụng tùy chọn này, PHP in ra các mô-đun PHP và Zend tích hợp (và được tải):

    $ php -m xml mã thông báo phiên tiêu chuẩn posix pcre quá tải mysql mbstring ctype
    -TôiTùy chọn dòng lệnh này gây ra phpinfo() và in kết quả. Nếu PHP không hoạt động chính xác, chúng tôi khuyên bạn nên chạy php -i và xem liệu thông báo lỗi có được in trước hoặc thay vì bảng thông tin hay không. Hãy nhớ rằng đầu ra sẽ ở dạng HTML và do đó khá lộn xộn.
    -r

    Tùy chọn này cho phép bạn chạy PHP trực tiếp trên dòng lệnh. Thẻ bắt đầu và kết thúc PHP () Không cần thiết và gây ra lỗi phân tích cú pháp.

    Ghi chú: Phải cẩn thận khi sử dụng dạng PHP này để đảm bảo không có xung đột với việc thay thế biến dòng lệnh do shell thực hiện.

    Một ví dụ tạo ra lỗi phân tích cú pháp:

    Sẽ đúng nếu sử dụng dấu nháy đơn" . Các biến chuỗi được đặt trong dấu ngoặc đơn không được mở rộng khi sh/bash chạy.

    Tệp thực thi PHP có thể được sử dụng để chạy các tập lệnh PHP hoàn toàn độc lập với máy chủ web.
    Nếu bạn đang chạy Unix, bạn nên thêm một dòng đầu tiên đặc biệt vào các tập lệnh PHP của mình và làm cho chúng có thể thực thi được để hệ thống biết chương trình nào sẽ thực thi các tập lệnh đó.
    Trong Windows, bạn có thể liên kết php.exe với tùy chọn nhấn đúp chuột sử dụng tệp .php hoặc tạo tệp bó (.bat) để chạy tập lệnh qua PHP. Một dòng được thêm vào đầu tập lệnh để chạy trên Unix sẽ hoạt động tốt trên Windows, vì vậy bạn có thể viết các chương trình đa nền tảng theo cách này. Dưới đây là một ví dụ về một chương trình PHP đơn giản được thực thi từ dòng lệnh.

    Ở đây chúng tôi sử dụng dòng đầu tiên đặc biệt để cho biết rằng tệp này sẽ được chạy bằng PHP. Ở đây chúng tôi đang làm việc với phiên bản CLI nên các tiêu đề HTTP không được xuất ra. Có hai biến bạn có thể sử dụng khi viết các ứng dụng PHP dòng lệnh: $argc và $argv. Đầu tiên là số đối số cộng 1 (tên kịch bản đang chạy). Thứ hai là một mảng các đối số, bắt đầu bằng tên tập lệnh có chỉ số 0 ($argv).

    Chúng tôi kiểm tra xem có ít hơn hoặc nhiều hơn một đối số. Ngoài ra, nếu đối số là --help , -help , -h hoặc -? , chúng tôi in một thông báo trợ giúp, hiển thị tên tập lệnh một cách linh hoạt. Nếu chúng tôi nhận được bất kỳ đối số nào khác, chúng tôi lặp lại nó.

    Nếu bạn muốn chạy tập lệnh trên trên Unix, bạn cần làm cho nó có thể thực thi được và chỉ cần gọi nó là script.php echothis hoặc script.php -h . Trên Windows, bạn có thể tạo một tệp bó để thực hiện tác vụ này:

    Giả sử rằng bạn đã đặt tên cho chương trình là script.php và php.exe của bạn nằm ở c:\php\php.exe , tệp bó này sẽ chạy nó với các tùy chọn bạn đã thêm: script.bat echothis hoặc script.bat -h .

    Xem thêm tài liệu về tiện ích mở rộng Readline để biết các tính năng bạn có thể sử dụng để nâng cao ứng dụng PHP dòng lệnh của mình.

Bài viết này cung cấp hướng dẫn từng bước một về việc cài đặt PHP cho sự hợp tác với máy chủ HTTP Apache trên Windows. Quy trình này đã được thử nghiệm trên cả Windows XP và Vista. Giả định rằng bạn đã hoàn tất quá trình cài đặt Apache.

Các bước thiết lập PHP 5

1. Tải xuống PHP 5

Trước khi bạn bắt đầu, hãy tải xuống bản sao PHP 5 từ tải trang. Tải xuống gói VC6 an toàn từ phần "Windows Binaries" - nghĩa là không tải xuống trình cài đặt. Ví dụ: chọn gói được đánh dấu " Gói zip PHP 5.2.5", nếu bật khoảnh khắc này Phiên bản hiện tại — 5.2.5 .

Lưu ý: Xin lưu ý rằng tôi chưa thử nghiệm quy trình dưới đây với các phiên bản PHP 5.3, chỉ với phiên bản 5.2.5. phiên bản mới nhất tại thời điểm viết bài. Về mặt lý thuyết, các bước tương tự nên được thực hiện đối với Cài đặt PHP 7 .

2. Cài đặt PHP 5

Tạo một thư mục trên ổ cứng của bạn cho PHP. Tôi đề xuất c:php , mặc dù bạn có thể sử dụng tên và vị trí thư mục khác. Cá nhân tôi không thích sử dụng tên có dấu cách.

Trích xuất tất cả các tệp từ kho lưu trữ đã tải xuống vào thư mục này. Để thực hiện việc này, chỉ cần nhấp đúp vào tệp zip. Và sau đó kéo tất cả các tệp vào thư mục c:php.

3. Đối với những người nâng cấp gói: Xóa tệp PHP.INI cũ khỏi thư mục Windows

Nếu bạn đang nâng cấp lên PHP 5 từ trên phiên bản cũ, đi tới thư mục Windows, ( thông thường đây là c:windows) và xóa mọi tệp php.ini mà bạn đã đặt trước đó ở đó.

4. Thiết lập PHP

Đi tới thư mục c:php và tạo bản sao của tệp được đề xuất bởi php.ini. Tên tập tin mới php.ini . Bây giờ bạn sẽ có tệp c:phpphp.in có nội dung giống với tệp được đề xuất c:phpphp.ini.

Ghi chú: Nếu bạn đang sử dụng Apache 1, bạn cần di chuyển tệp php.ini vào thư mục Windows ( c:cửa sổ) hoặc cấu hình biến môi trường PATH để bao gồm c:php . Nếu bạn không biết cách thực hiện việc này, chỉ cần di chuyển tệp php.ini vào thư mục c:windows. Bạn không cần thực hiện việc này nếu bạn đang sử dụng Apache 2, vì sau này chúng tôi sẽ chỉ định một lệnh trong tệp cấu hình Apache 2 với vị trí của tệp php.ini.

Để cài đặt PHP trên Windows 7 bằng cách sử dụng soạn thảo văn bản (ví dụ: chẳng hạn như Notepad, có thể tìm thấy trong phần Hệ thống của menu Bắt đầu)? mở tệp php.ini. Bạn có thể cần thực hiện những thay đổi sau đối với tệp:

a) Bao gồm các thẻ mở ngắn

Tìm dòng sau:

short_open_tag = Tắt

Nếu short_open_tag được đặt thành tắt , các thẻ như "

Vì nhiều tập lệnh PHP của bên thứ ba sử dụng "

short_open_tag=Bật

b) Những câu nói ma thuật

Khi Apache PHP được cài đặt theo mặc định, dữ liệu đến không được tự động thoát bằng dấu gạch chéo. Ví dụ: nếu bạn muốn đầu vào có dấu gạch chéo ngược ("") để tái tạo cài đặt lưu trữ, hãy tìm dòng sau:

magic_quotes_gpc = Tắt

và thay thế nó bằng:

magic_quotes_gpc = Bật

Không nên làm điều này nếu thông số này không được đặt trên máy chủ lưu trữ. Ngay cả khi được đặt thành Tắt, bạn vẫn có thể sử dụng Hàm PHP thêm dấu gạch chéo()để thêm dấu gạch chéo cho các phần dữ liệu cụ thể.

c) Sử dụng biến toàn cục

Một số tập lệnh cũ hơn, khi được thực thi, giả định rằng tất cả dữ liệu được gửi qua biểu mẫu sẽ tự động có một biến PHP có cùng tên. Ví dụ: nếu một biểu mẫu có trường đầu vào có tên là "something", các tập lệnh PHP cũ hơn sẽ giả định rằng bộ xử lý PHP sẽ tự động tạo một biến có tên $something chứa giá trị được chỉ định thông qua trường đó.

Nếu bạn sử dụng các tập lệnh như vậy, bạn cần tìm dòng sau:

register_globals = Tắt

và thay đổi nó thành:

register_globals = Bật

Cảnh báo: Khi cài đặt PHP trên Windows, không làm điều này trừ khi bạn có tập lệnh của bên thứ ba yêu cầu điều này hoạt động. Khi viết tập lệnh mới, tốt nhất bạn nên luôn giả định rằng phần tử register_globals được đặt thành " Tắt«.

d) Hiển thị lỗi

Trên một trang web trực tiếp, các lỗi trong tập lệnh thường được ghi lại mà không xuất hiện trong tệp lỗi PHP. Nhưng trên máy cục bộ, trong khi bạn đang kiểm tra và gỡ lỗi tập lệnh PHP, sẽ thuận tiện hơn khi gửi thông báo lỗi khi chúng được phát hiện trực tiếp tới cửa sổ trình duyệt. Bằng cách này, bạn sẽ không bỏ sót lỗi ngay cả khi quên kiểm tra tệp nhật ký lỗi.

Để PHP hiển thị thông báo lỗi trực tiếp trong cửa sổ trình duyệt, hãy tìm dòng sau:

display_errors = Tắt

và thay đổi nó thành:

display_errors=Bật

Cài đặt này phải luôn được đặt thành Tắt trên trang web đang chạy.

e) Đường dẫn phiên

Nếu tập lệnh sử dụng phiên, hãy tìm dòng sau:

;session.save_path = "/tmp"

session.save_path chỉ định thư mục nơi PHP lưu các tệp phiên. Vì thư mục /tmp không tồn tại trong Windows nên bạn cần cài đặt một thư mục khác. Một cách là tạo một thư mục có tên c:tmp ( như trước đây chúng tôi đã tạo c:php) và chỉ định thư mục này cho tham số này. Nếu bạn làm điều này, hãy thay đổi dòng này như sau:

session.save_path = "c:tmp"

Lưu ý rằng ngoài việc thay đổi đường dẫn, tôi cũng xóa tiền tố dấu chấm phẩy (";") khỏi chuỗi.

Bạn cũng có thể sử dụng thư mục TEMP hiện tại trên máy tính của mình. Hoặc tạo thư mục tmp trong thư mục PHP của bạn, như c:phptmp và đặt tệp cấu hình tương ứng. Có thể có nhiều lựa chọn có thể. Nếu bạn không thể quyết định nên chọn cái nào, chỉ cần tạo c:php và làm như tôi đã nói ở trên.

f) Máy chủ SMTP

Nếu bạn đã cài đặt PHP 55, nếu tập lệnh của bạn sử dụng hàm mail() và bạn muốn hàm này gửi thư thành công trên máy cục bộ của mình, hãy tìm phần sau:

; Chỉ dành cho Win32. SMTP = localhost smtp_port = 25; Chỉ dành cho Win32. ;sendmail_from= [email được bảo vệ]

Thay đổi nó để bao gồm địa chỉ máy chủ SMTP và tài khoản email của bạn. Ví dụ, nếu bạn Máy chủ SMTP mail.example.com và địa chỉ email [email được bảo vệ], thay đổi mã như thế này:

SMTP = mail.example.com smtp_port = 25 sendmail_from = [email được bảo vệ]

Xin lưu ý rằng sau đó, khi tập lệnh cố gắng sử dụng hàm mail(), tập lệnh sẽ cần kết nối với ISP của bạn để tập lệnh hoạt động thành công. Nếu bạn không thay đổi các dòng trên và cố gắng sử dụng hàm mail() trong tập lệnh, hàm này sẽ trả về mã lỗi và hiển thị thông báo lỗi.

Cách định cấu hình Apache cho PHP 5

Có hai cách để cài đặt Apache PHP. Đầu tiên: thiết lập để tải xuống Trình thông dịch PHP như một mô-đun Apache. Thứ hai: định cấu hình nó để chạy trình thông dịch dưới dạng nhị phân CGI. Chỉ một trong số chúng cần được sử dụng. Chọn phương thức mô-đun nếu PHP cũng được cài đặt trên máy chủ lưu trữ, như mô-đun Apache hoặc sử dụng phương thức CGI nếu nó được triển khai trên máy chủ lưu trữ.

a) Chạy PHP 5 dưới dạng mô-đun Apache

Để định cấu hình Apache để tải PHP dưới dạng mô-đun phân tích các tập lệnh PHP, hãy sử dụng trình soạn thảo văn bản ASCII để mở tệp cấu hình Apache, httpd.conf.

Nếu bạn đang sử dụng Apache 1.x, tệp sẽ nằm trong thư mục c:Tệp chương trìnhNhóm ApacheApacheconf. Người dùng Apache 2.0.x có thể tìm thấy nó trong thư mục C:Tệp chương trìnhNhóm ApacheApache2conf và người dùng Apache 2.2.x có trong thư mục C:Tệp chương trìnhNền tảng phần mềm ApacheApache2.2conf. Thông thường, nó nằm trong thư mục conf của thư mục cài đặt Apache.

Xác định vị trí phần của tệp có câu lệnh LoadModule. Các khai báo có ký hiệu băm "#" đứng trước được coi là đã được nhận xét.

Nếu bạn đang sử dụng Apache 1.x, hãy thêm dòng sau sau tất cả các câu lệnh LoadModule:

LoadModule php5_module "c:/php/php5apache.dll"

Nếu bạn đang sử dụng Apache 2.0.x, hãy thêm dòng sau sau tất cả các câu lệnh LoadModule:

LoadModule php5_module "c:/php/php5apache2.dll"

Nếu bạn đang sử dụng Apache 2.2.x, hãy thêm dòng sau:

LoadModule php5_module "c:/php/php5apache2_2.dll"

Lưu ý rằng ví dụ cài đặt PHP này sử dụng ký tự dấu gạch chéo lên (“/”) thay vì dấu gạch chéo ngược truyền thống của Windows (“”). Đây không phải là một lỗi đánh máy.

Nếu bạn đang sử dụng Apache 1.x, hãy tìm chuỗi câu lệnh "AddModule" và thêm dòng sau vào sau tất cả các dòng.

AddModule mod_php5.c

Sau đó tìm khối AddType trong tệp và thêm dòng sau sau câu lệnh AddType cuối cùng. Việc này cần phải được thực hiện bất kể bạn đang sử dụng phiên bản Apache nào. Đối với Apache 2.2.x bạn cần tìm dòng AddType trong phần . Thêm một dòng ngay trước khi đóngcho phần này.

Nếu bạn cần hỗ trợ cho các loại tệp khác, chẳng hạn như ".phtml", hãy thêm chúng vào danh sách, ví dụ như thế này:

Đối với những người sử dụng một trong các phiên bản Apache 2, bạn cần chỉ định vị trí của tệp PHP ini. Thêm dòng sau vào cuối httpd.conf.

PHPIniDir "c:/php"

Nếu bạn đã sử dụng một thư mục khác, bạn sẽ cần thay đổi c:/php thành đường dẫn chính xác. Đừng quên sử dụng dấu gạch chéo lên ("/").

Nếu bạn đang sử dụng Apache 1, bạn đã đặt tệp php.ini vào thư mục Windows hoặc một nơi nào đó trong PATH của bạn. Vì vậy PHP sẽ phải tự tìm nó.

Chạy PHP 5 dưới dạng nhị phân CGI

Nếu bạn đã định cấu hình PHP 5 để tải dưới dạng mô-đun Apache, bạn có thể bỏ qua phần này. Nó dành cho những ai muốn cấu hình PHP để chạy dưới dạng nhị phân CGI.

Quy trình thực hiện việc này khi cài đặt PHP 7 giống nhau đối với cả Apache 1.x và tất cả các phiên bản của dòng 2.x.

Xác định vị trí phần tệp cấu hình Apache chứa phần ScriptAlias. Thêm dòng bên dưới ngay sau dòng ScriptAlias ​​cho " cgi-bin" Nếu bạn đang sử dụng Apache 2.2.x, hãy đảm bảo dòng này nằm trước khi đóngcho phần .

ghi chú: Nếu bạn đã cài đặt PHP ở một vị trí khác, ví dụ c:Program Filesphp , thay vào đó bạn cần chỉ định đường dẫn thích hợp c:/php/ (ví dụ: c:Program Filesphp). Đừng quên rằng ở đây chúng ta đang sử dụng dấu gạch chéo lên ("/") thay vì dấu gạch chéo ngược của Windows ("").

ScriptAlias ​​/php/ "c:/php/"

Apache cần định cấu hình loại MIME PHP. Tìm khối nhận xét AddType giải thích cách sử dụng nó và thêm dòng sau vào bên dưới nó. Đối với Apache 2.2.x, hãy tìm dòng AddType bên dưới . Thêm dòng dưới đây ngay trước khi đóng cho phần này.

Ứng dụng AddType/x-httpd-php .php

Giống như việc cài đặt PHP dưới dạng mô-đun Apache, bạn có thể thêm bất kỳ tiện ích mở rộng nào để Apache nhận dạng chúng dưới dạng tập lệnh PHP, ví dụ:

Ứng dụng AddType/x-httpd-php .phtml

Sau đó, bạn cần yêu cầu máy chủ thực thi tệp thực thi PHP mỗi khi nó gặp tập lệnh PHP. Thêm đoạn mã sau vào tệp, ví dụ sau một khối nhận xét giải thích " Hoạt động«.

Nếu bạn đang sử dụng Apache 2.2.x, hãy thêm mã ngay sau câu lệnh AddType được mô tả ở trên; Apache 2.2.x không có khối bình luận " Hoạt động«.

Ứng dụng hành động/x-httpd-php "/php/php-cgi.exe"

Lưu ý: Phần "/php/" sẽ được nhận dạng là ScriptAlias, một loại macro sẽ được Apache mở rộng thành "c:/php/" ( hoặc "c:/Program Files/php/" nếu bạn đã cài đặt PHP ở đó). Nói cách khác, không đặt đường dẫn "c:/php/php.exe" hoặc "c:/Tệp chương trình/php/php.exe", nhưng hãy sử dụng “/php/php-cgi.exe”.

Nếu bạn đang sử dụng Apache 2.2.x, hãy tìm phần sau trong tệp httpd.conf của bạn:

Thêm các dòng bên dưới ngay sau phần bạn vừa tìm thấy.

AllowOverride Không có Tùy chọn Không Cho phép thứ tự, từ chối Cho phép từ tất cả

c) Đặt trang chỉ mục mặc định

Phần này áp dụng cho tùy chọn cài đặt PHP trên Windows dưới dạng cả mô-đun Apache và nhị phân CGI.

Nếu bạn tạo một tệp index.php và muốn Apache tải nó làm trang chủ của trang web, bạn sẽ phải thêm một dòng khác vào tệp httpd.conf. Tìm dòng bắt đầu bằng " Chỉ mục thư mục", và thêm" chỉ mục.php" vào danh sách các tập tin. Ví dụ: nếu bạn có mã như thế này:

DirectoryIndex index.html

thay đổi nó thành:

DirectoryIndex Index.php Index.html

Lần tiếp theo bạn đăng nhập vào máy chủ web thông qua tên thư mục như " localhost" hoặc " localhost/thư mục/", Apache sẽ gửi tất cả các tập lệnh từ index.php hoặc nội dung của tệp index.html nếu không có index.php.

Khởi động lại máy chủ web Apache

Khởi động lại máy chủ Apache. Điều này là cần thiết để Apache đọc các chỉ thị cấu hình PHP mới mà bạn đã đặt trong tệp httpd.conf. Có thể khởi động lại máy chủ Apache 2.2 bằng cách nhấp đúp vào biểu tượng Apache Service Monitor trên thanh tác vụ và nhấp vào nút “Khởi động lại” trong cửa sổ xuất hiện.

Kiểm tra cài đặt PHP

Sau khi cài đặt PHP 5 5 hoặc phiên bản khác của ngôn ngữ, hãy tạo tệp php với dòng sau:

Lưu tệp có tên test.php vào thư mục htdocs Apache. Nếu bạn sử dụng Notepad thì nhớ lưu tên " test.php" với dấu ngoặc kép. Nếu không, chương trình sẽ tự động thêm phần mở rộng .txt.

Mở tệp này trong trình duyệt của bạn bằng cách nhập “localhost/test.php” (không có dấu ngoặc kép) vào thanh địa chỉ. Không mở tệp trực tiếp thông qua Explorer—bạn sẽ chỉ thấy mã bạn đã nhập trước đó. Bạn cần sử dụng URL trên để yêu cầu trình duyệt truy cập vào máy chủ web Apache chạy PHP để diễn giải tập lệnh.

Nếu mọi việc suôn sẻ, bạn sẽ thấy một trang có thông tin về cách thiết lập PHP. Xin chúc mừng - bạn đã cài đặt thành công PHP và định cấu hình Apache để hoạt động với nó. Bạn có thể tải cùng một tệp test.php lên máy chủ của mình và chạy nó ở đó để tìm hiểu cách máy chủ lưu trữ đã định cấu hình PHP và thử tái tạo các cài đặt này trên máy của bạn.

Nếu cách này không hiệu quả, hãy kiểm tra xem liệu cài đặt PHP hoặc cài đặt Apache có bị lỗi hay không. Để thực hiện việc này, hãy mở cửa sổ nhắc lệnh và chạy php-cgi.exe trên tệp test.php, ví dụ c:phpphp-cgi test.php .

Nếu bạn gọi PHP từ dòng lệnh và thấy một tệp HTML lớn có tất cả thông tin cấu hình PHP thì PHP đã được định cấu hình đúng. Vấn đề có lẽ liên quan đến cấu hình Apache. Đảm bảo bạn khởi động lại Apache sau khi thực hiện thay đổi cấu hình và bạn đã định cấu hình máy chủ web chính xác.