Làm cách nào để cài đặt tiện ích mở rộng zip PHP trên Mac?

Tạm dừng phát triển trong một hoặc hai ngày và nâng cấp máy tính xách tay của tôi lên Catalina có vẻ là một cách hay để bắt đầu năm mới

Catalina nâng cấp phiên bản System PHP từ 7. 2. x đến 7. 3. 9, đây là sự thay đổi mà tôi mong muốn nhận được dưới dạng PHP 7. 2 không còn được hỗ trợ tích cực bởi cộng đồng nhà phát triển PHP. Tuy nhiên, quá trình nâng cấp OS X luôn bao gồm một vài điều bất ngờ cho các nhà phát triển

Một bất ngờ lớn trong bản nâng cấp này là Catalina cải thiện tính bảo mật bằng cách thêm hệ thống tệp chỉ đọc cho các tệp hệ thống quan trọng mà bạn không muốn bị giả mạo. Điều đó rất có ý nghĩa, nhưng nó cũng phức tạp khi sử dụng PECL hoặc phpize, bởi vì các đường dẫn bên dưới /usr mà chúng tham chiếu hiện ở chế độ chỉ đọc

Sau khi nâng cấp, các trang web dành cho nhà phát triển của tôi nói chung hoạt động tốt, nhưng trên một trang web, tôi gặp phải lỗi sau

Error: Class 'ZipArchive' not found

Hóa ra là PHP 7. 3 đi kèm với Catalina không bao gồm hỗ trợ zip/ZipArchive. Dự án này yêu cầu ZipArchive, vì vậy tôi có thể chuyển sang một phương pháp cài đặt PHP khác, chẳng hạn như sử dụng môi trường brew hoặc Docker hoặc Lando hoặc tôi có thể tìm ra cách kích hoạt lại hỗ trợ zip trong hệ thống PHP

Tôi đã đi với cách tiếp cận sau

Cá nhân tôi thích Lando cho các phiên bản PHP phụ nhưng tôi nhận thấy hình phạt về hiệu suất khi chạy Docker trên máy Mac quá cao để sử dụng nó cho môi trường chính của mình. Ví dụ: dự án này yêu cầu xây dựng lại trang web thường xuyên, giúp tăng hiệu quả từ việc thực hiện quy trình đó trong 10 phút thay vì gần một giờ, điều quan trọng đối với năng suất của tôi

Rất nhiều nhà phát triển tại Affinity Bridge sử dụng brew để chạy nhiều phiên bản PHP trên máy tính xách tay của họ. Tôi cũng đã sử dụng phương pháp đó nhưng đã đau đầu khi quản lý các thành phần phụ thuộc theo cách đó, với dự định là một thay đổi nhỏ đối với ngăn xếp AMP của tôi sẽ kích hoạt các bản cập nhật của các công cụ có vẻ không liên quan như python3 gây ra sự cố ở những nơi khác trong môi trường của tôi. Vì vậy, nếu tôi có thể tránh cách tiếp cận này, tôi sẽ

Tôi đã thu thập thông tin từ một số nhà phát triển khác, những người đã gặp sự cố tương tự và tôi đã nghĩ ra một giải pháp

Bước 1. Cài đặt hỗ trợ PEAR/PECL

cd /tmp
curl -s -O //pear.php.net/install-pear-nozlib.phar
sudo php install-pear-nozlib.phar -d /usr/local/lib/php -b /usr/local/bin 
[tín dụng]

Bước 2. Tải xuống nguồn tiện ích mở rộng zip

Tôi đã thử cài đặt zip với pecl, nhưng không thành công vì thiếu các tệp tiêu đề PHP. Vì vậy, tôi đã tải xuống nguồn cho tiện ích mở rộng zip từ pecl

pecl download //pecl.php.net/get/zip
tar -xzvf zip 

Bước 3. Tải xuống các tệp src/tiêu đề PHP

Để xây dựng các phần mở rộng PHP, bạn cần các tệp tiêu đề cho phiên bản PHP mà bạn đang nhắm mục tiêu. Trên OS X, điều này được thực hiện với XCode [tín dụng]

 xcode-select --install 
Để xác minh rằng các tệp tiêu đề hiện có sẵn và tìm đường dẫn của chúng.
$ sudo find /Library -name php.h
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/php/main/php.h
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/php/main/php.h

Bước 4. Sao chép/sửa đổi phpsize và php-config

Để tạo phpize và php-config, hãy tìm các tệp tiêu đề PHP ở vị trí mà XCode đặt chúng thay vì trong /usr/include/php -- hiện tại là vị trí chỉ đọc -- Tôi đã theo dõi, sao chép và sửa đổi phpize và php-

cp /usr/bin/phpize /usr/local/bin/phpize 
cp /usr/bin/php-config /usr/local/bin/php-config 

Sau đó, tôi đã chỉnh sửa đường dẫn bao gồm trong mỗi người trong số họ. Đây là những khác biệt

 local:/tmp/zip-1.15.5/modules $ diff /usr/bin/phpize /usr/local/bin/phpize
8c8
< includedir="`eval echo ${prefix}/include`/php"
---
> includedir="`eval echo /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include`/php"
local:/tmp/zip-1.15.5/modules $ diff /usr/bin/php-config /usr/local/bin/php-config
9c9
< include_dir="${prefix}/include/php"
---
> include_dir="/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/php" 

Bước 5. Xây dựng phần mở rộng zip PHP

Với tất cả những thay đổi đó, giờ đây tôi có thể tạo tiện ích mở rộng zip

cd zip-1.15.5
phpize
 ./configure -with-php-config=/usr/local/bin/php-config 
make 

Bước 6. Cài đặt tiện ích mở rộng zip PHP

thực hiện cài đặt không thể cài đặt tiện ích mở rộng, một lần nữa do hệ thống tệp chỉ đọc. Vì vậy, thay vào đó tôi đã tạo một thư mục mở rộng trong /usr/local/php

________số 8_______

Bước 7. Cập nhật PHP của bạn. ban đầu

Cuối cùng, chúng ta cần yêu cầu PHP tải tiện ích mở rộng này

 sudo vim /etc/php.ini 
Thêm dòng sau.
cd /tmp
curl -s -O //pear.php.net/install-pear-nozlib.phar
sudo php install-pear-nozlib.phar -d /usr/local/lib/php -b /usr/local/bin 
0Khởi động lại apache với sudo apachectl restart và bạn sẽ thấy tiện ích zip đang được tải ngay bây giờ

Tôi hy vọng cộng đồng phát triển PHP và Mac sẽ giải quyết các vấn đề với hệ thống tệp chỉ đọc khiến quá trình tạo và cài đặt PECL không thành công, nhưng biết cách biên dịch các phần mở rộng PHP của riêng bạn và sử dụng chúng với hệ thống PHP trên OS X là cực kỳ hữu ích. Có lẽ quy trình này có thể được sử dụng cho các tiện ích mở rộng PHP hữu ích khác như xdebug

Làm cách nào để cài đặt tiện ích mở rộng PHP zip trên Mac?

Hướng dẫn .
Để cài đặt php-zip, hãy chạy lệnh sau trong thiết bị đầu cuối macOS [Ứng dụng->Tiện ích->Terminal] sudo port install php-zip Copy
Để xem những tập tin nào đã được cài đặt bởi php-zip, hãy chạy. nội dung cổng php-zip Sao chép
Để sau này nâng cấp php-zip, hãy chạy. sudo port selfupdate && sudo port upgrade php-zip Sao chép

Bạn có thể tải xuống PHP trên Mac không?

PHP được cài đặt sẵn trên hầu hết các hệ thống macOS nên bạn thường không cần cài đặt thủ công.

Tôi có thể tải phần mở rộng PHP ở đâu?

» https. //pecl. php. net/ Trang web PECL chứa thông tin về các tiện ích mở rộng khác nhau do Nhóm phát triển PHP cung cấp.

Chủ Đề