2016-03-02 20 views
9

Trước khi yêu cầu, tôi phải nói rằng tôi có đã thử mọi câu hỏi tương tự ở đây trên ngăn xếp và ở nơi khác và không thành công.Lỗi mở rộng của trình soạn thảo Php

Tôi không thể sử dụng composer vì lỗi này:

requires ext-openssl * -> the requested PHP extension openssl is missing from your system. 

Tôi có xampp trên ubuntu.

Những gì tôi đã cố gắng:

  • Tôi có chú thích ;extension=php_openssl.dll trong php.ini (cả cli và bình thường) - đã không làm việc
  • openssl cài đặt thông qua thiết bị đầu cuối bên ngoài của php - đã không làm việc
  • Kiểm tra trong phpinfo() nếu openssl được tải và kích hoạt

enter image description here

  • và vài giống như runing nhà soạn nhạc qua php -c /opt/lampp/etc/php.ini composer.phar install nơi mà tôi nhận được lỗi

PHP Warning: PHP Startup: Unable to load dynamic library /usr/include/php5/ext/php_openssl.so - /usr/include/php5/ext/php_openssl.so: cannot open shared object file: No such file or directory in Unknown on line 0

  • Tôi đã cố gắng để thay đổi PATH trong bashrc, không thành công hoặc

gì tôi đã thấy lạ là vị trí của các tiện ích mở rộng ...

Trong phpinfo() thư mục mở rộng là /usr/include/php5/ext/ mặc dù tôi đã cố gắng chỉ định một thư mục khác trong php.ini và tất nhiên khởi động lại apache và vẫn không hiển thị trong phpinfo().

Nhưng trong php-config lệnh tôi nhận được rằng dir phần mở rộng là/usr/local/lib/php/extensions/no-debug-non-zts-20100525

Tôi không chắc chắn nếu tôi có nhiều php trên hệ thống nhưng tôi đã cố gắng để tìm kiếm các file php.ini và chỉ 2 đã đưa ra.

/etc/php5/cli/php.ini 

/opt/lampp/etc/php.ini 
+0

Có vẻ như bạn có hai cài đặt PHP khác nhau. Có lẽ một từ XAMPP (/ usr/local) và một từ cơ sở Ubuntu (/ usr). Nếu trường hợp đó xảy ra, bạn có thể chỉnh sửa PATH của mình để thích cái bạn muốn hoặc chỉ cần gỡ cài đặt cái bạn không muốn. –

+0

Tôi đã cố gắng tìm 'php.ini' thông qua lệnh' find' và tìm thấy một trong 'cli' và một trong'/opt/lampp/etc/php.ini' – JTC

+2

Để xem tệp 'php.ini' nào được sử dụng bởi cli của bạn chạy 'php -i | grep php.ini'. –

Trả lời

2

tôi thích cài đặt LAMP chồng vs xamp: nó là đơn giản và dễ dàng cấu hình gói ...

sudo apt-get install apache2 
sudo apt-get install curl php5-cli php5 libapache2-mod-php5 php5-openssl 
sudo /etc/init.d/apache2 restart 
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer 

Để kiểm tra cài đặt của bạn, hãy chạy:

composer 

với lệnh này không cần thiết đã thay đổi php.ini và v.v.

1

Trước hết bạn phải hiểu hệ thống tệp thư viện phù hợp theo hệ điều hành. Trong Windows, các tệp Thư viện được chia sẻ có phần mở rộng của DLL và trong Linux, các tệp Thư viện được chia sẻ có phần mở rộng của SO.

Bất cứ nơi nào bạn đang thực hiện các thay đổi trong tệp PHP.ini đều không hoạt động đúng. Trước hết bạn phải tìm đúng vị trí của PHP. Kể từ khi dịch vụ apache đang chạy nó sẽ là nhiệm vụ dễ dàng để tìm vị trí chạy:

$ httpd -V 

Server version: Apache/2.2.17 (Unix) 
Server built: Dec 17 2010 11:58:24 
Server's Module Magic Number: 20051115:25 
Server loaded: APR 1.3.12, APR-Util 1.3.9 
Compiled using: APR 1.3.12, APR-Util 1.3.9 
Architecture: 32-bit 
Server MPM:  Prefork 
    threaded:  no 
    forked:  yes (variable process count) 
Server compiled with.... 
-D APACHE_MPM_DIR="server/mpm/prefork" 
-D APR_HAS_SENDFILE 
-D APR_HAS_MMAP 
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) 
-D APR_USE_SYSVSEM_SERIALIZE 
-D APR_USE_PTHREAD_SERIALIZE 
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT 
-D APR_HAS_OTHER_CHILD 
-D AP_HAVE_RELIABLE_PIPED_LOGS 
-D DYNAMIC_MODULE_LIMIT=128 
-D HTTPD_ROOT="/etc/httpd" 
-D SUEXEC_BIN="/usr/sbin/suexec" 
-D DEFAULT_PIDLOG="logs/httpd.pid" 
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status" 
-D DEFAULT_LOCKFILE="logs/accept.lock" 
-D DEFAULT_ERRORLOG="logs/error_log" 
-D AP_TYPES_CONFIG_FILE="conf/mime.types" 
-D SERVER_CONFIG_FILE="conf/httpd.conf" 

Điểm mấu chốt trong sản lượng đó là HTTPD_ROOT. Điều đó xác định nơi thư mục ROOT của Apache là bắt đầu, /etc/httpd trong trường hợp của tôi. Vì chúng tôi phải tìm đúng vị trí của PHP, hãy mở SERVER_CONFIG_FILE sẽ là thư mục con 'conf' như trong trường hợp của tôi.

Tìm kiếm trong tệp cho env_module sẽ tiết lộ vị trí chính xác của PHP.

<IfModule env_module> 
    .... 
    SetEnv PHP_PEAR_SYSCONF_DIR "location of PHP" 
    SetEnv PHPRC "location of PHP" 
    .... 
</IfModule env_module> 

Bây giờ mở file php.ini làm thay đổi cần thiết

;;;;;;;;;;;;;;;;;;;;;; 
; Dynamic Extensions ; 
;;;;;;;;;;;;;;;;;;;;;; 
; under UNIX: 
; 
; extension=msql.so 
; 
; ... or with a path: 
; 
; extension=/path/to/extension/msql.so 
; 
; If you only provide the name of the extension, PHP will look for it inits 
; default extension directory. 
; 
extension=php_openssl.so 

Nếu vấn đề không giải quyết sau đó cho tôi biết.

Các vấn đề liên quan