Php composer openssl 错误
Php composer openssl error
在提问之前,我不得不说我已经尝试 这里堆栈和其他地方的每个类似问题但都失败了。
我无法使用 composer
因为这个错误:
requires ext-openssl * -> the requested PHP extension openssl is missing from your system.
我在 ubuntu
上有 xampp
。
我尝试过的:
- 我在
php.ini
(cli 和普通)中取消了 ;extension=php_openssl.dll
的注释 - 没有用
- 通过 php 之外的终端安装了 openssl - 没用
- 如果
openssl
已加载并激活,请签入 phpinfo()
- 还有一些像通过
php -c /opt/lampp/etc/php.ini composer.phar install
运行作曲家,但我得到错误
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
- 我试过在
bashrc
中更改PATH
,也没有成功
我发现奇怪的是扩展的位置...
在 phpinfo()
中,扩展目录是 /usr/include/php5/ext/
,尽管我已经尝试在 php.ini
中指定另一个目录,当然重启 apache 但仍然没有在 phpinfo()
中显示。
但是在 php-config
命令中我得到扩展目录是 /usr/local/lib/php/extensions/no-debug-non-zts-20100525
我不确定系统上是否有多个 php,但我尝试查找 php.ini 个文件,但只找到 2 个。
/etc/php5/cli/php.ini
/opt/lampp/etc/php.ini
首先,您必须根据 OS 了解正确的库文件系统。在 Windows 中,共享库文件的扩展名为 DLL,在 Linux 中,共享库文件的扩展名为 SO。
无论您在哪里对 PHP.ini 文件进行更改,都无法正常进行。首先你必须找到 PHP 的正确位置。由于 apache 服务是 运行ning,因此很容易找到位置 运行:
$ 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"
该输出中的关键行是 HTTPD_ROOT
。这定义了 Apache 的 ROOT
目录从哪里开始,在我的例子中是 /etc/httpd
。因为我们必须找到 PHP
的正确位置,所以打开 SERVER_CONFIG_FILE
这将是我的子目录 'conf'。
在文件中搜索 env_module
,这将显示 PHP 的正确位置。
<IfModule env_module>
....
SetEnv PHP_PEAR_SYSCONF_DIR "location of PHP"
SetEnv PHPRC "location of PHP"
....
</IfModule env_module>
现在打开 PHP.ini 文件进行必要的更改
;;;;;;;;;;;;;;;;;;;;;;
; 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
如果问题没有解决,请告诉我。
我更喜欢安装 LAMP 堆栈而不是 xamp:
它是简单易用的配置包...
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
要测试您的安装,运行:
composer
不需要使用此命令更改 php.ini 等
在提问之前,我不得不说我已经尝试 这里堆栈和其他地方的每个类似问题但都失败了。
我无法使用 composer
因为这个错误:
requires ext-openssl * -> the requested PHP extension openssl is missing from your system.
我在 ubuntu
上有 xampp
。
我尝试过的:
- 我在
php.ini
(cli 和普通)中取消了;extension=php_openssl.dll
的注释 - 没有用 - 通过 php 之外的终端安装了 openssl - 没用
- 如果
openssl
已加载并激活,请签入phpinfo()
- 还有一些像通过
php -c /opt/lampp/etc/php.ini composer.phar install
运行作曲家,但我得到错误
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
- 我试过在
bashrc
中更改PATH
,也没有成功
我发现奇怪的是扩展的位置...
在 phpinfo()
中,扩展目录是 /usr/include/php5/ext/
,尽管我已经尝试在 php.ini
中指定另一个目录,当然重启 apache 但仍然没有在 phpinfo()
中显示。
但是在 php-config
命令中我得到扩展目录是 /usr/local/lib/php/extensions/no-debug-non-zts-20100525
我不确定系统上是否有多个 php,但我尝试查找 php.ini 个文件,但只找到 2 个。
/etc/php5/cli/php.ini
/opt/lampp/etc/php.ini
首先,您必须根据 OS 了解正确的库文件系统。在 Windows 中,共享库文件的扩展名为 DLL,在 Linux 中,共享库文件的扩展名为 SO。
无论您在哪里对 PHP.ini 文件进行更改,都无法正常进行。首先你必须找到 PHP 的正确位置。由于 apache 服务是 运行ning,因此很容易找到位置 运行:
$ 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"
该输出中的关键行是 HTTPD_ROOT
。这定义了 Apache 的 ROOT
目录从哪里开始,在我的例子中是 /etc/httpd
。因为我们必须找到 PHP
的正确位置,所以打开 SERVER_CONFIG_FILE
这将是我的子目录 'conf'。
在文件中搜索 env_module
,这将显示 PHP 的正确位置。
<IfModule env_module>
....
SetEnv PHP_PEAR_SYSCONF_DIR "location of PHP"
SetEnv PHPRC "location of PHP"
....
</IfModule env_module>
现在打开 PHP.ini 文件进行必要的更改
;;;;;;;;;;;;;;;;;;;;;;
; 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
如果问题没有解决,请告诉我。
我更喜欢安装 LAMP 堆栈而不是 xamp: 它是简单易用的配置包...
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
要测试您的安装,运行:
composer
不需要使用此命令更改 php.ini 等