问题
I run a PHP script and get this error:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/ixed.5.2.lin' - /usr/local/lib/php/extensions/no-debug-non-zts-20090626/ixed.5.2.lin: cannot open shared object file: No such file or directory in Unknown on line 0
What does that mean?
回答1:
It means there is an extension=...
or zend_extension=...
line in one of your php configuration files (php.ini, or another close to it) that is trying to load that extension : ixed.5.2.lin
Unfortunately that file or path doesn't exist or the permissions are incorrect.
- Try to search in the
.ini
files that are loaded by PHP (phpinfo()
can indicate which ones are) - one of them should try to load that extension. - Either correct the path to the file or comment out the corresponding line.
回答2:
If you're on Linux, you can find all loaded configuration files by typing this in shell:
php -r "print phpinfo();" | grep ".ini"
UPDATE: As mentioned in comments, this can be even more accurate:
php -i | grep ini
回答3:
If you just want to make the error disappear, and you don't need the extension, then by all means comment the line out in php.ini
. But if you actually want to fix the problem here is some additional info.
There are various causes for this based on the exact module, but there are also some general guidelines.
- Open
phpinfo()
and look forextension_dir
under theCore
section. This is where your modules should be located.
For instance,
/usr/lib/php/modules
for Unix/Linux.
- If the file does in fact exist, make sure permissions are adequate.
- If the file does not exist, use the resources below to install it.
Installation on *nix (PEAR)
Installation of extensions on Windows
回答4:
phpStom with XAMPP
TL;DR Except from verifying that the files exist, you might need to add the drive letter to some records in your php.ini file
I suddenly started having a problem using phpStorm 7 for debugging php with xampp and xdebug. When trying to set intellij interperter to be xampps php I got a lot of the warnings like the one in the question, for example:
Unable to load dynamic library '/xampp/php/ext/php_bz2.dll'
For some reason I had to add my drive letter to the records of extension_dir and browscap in the php.ini file:
extension_dir = "\xampp\php\ext"
browscap = "\xampp\php\extras\browscap.ini"
to
extension_dir = "e:\xampp\php\ext"
browscap = "e:\xampp\php\extras\browscap.ini"
回答5:
php -r "echo php_ini_loaded_file();"
Will show in CLI current ini loaded file, search there for Your extension, path to it is incorrect.
回答6:
Note that you can also get this error if your PHP library doesn't have the "other" directory opening permission. In my particular case, I noticed this when using php -l
to syntax check a script in my text editor. This meant that since my account was called "volomike", that account didn't have permission to run the libraries that the php
command relied upon.
For instance, on Ubuntu 14.04, I had PHP5 installed automatically into the path /usr/lib/php5/20121212+lfs
. However, because I was working in C++ in building some shared objects, I messed around with the directory permissions and screwed things up such that non-root accounts did not have the directory execute (directory open) permissions to view /usr/lib/php5/20121212+lfs
. So, I typed the following command to rectify that problem:
sudo chmod o+x /usr/lib/php5/20121212+lfs
.
Now when I do php -l example.php
as a non-root user, it never gives me this "Unabled to load dynamic library" problem anymore.
回答7:
Loading .dll in Linux
I've encountered this warning message while I was trying to install a php-extension via the php.ini file;
until I figured out that you cannot load .dll extensions in Linux,
but you have to comment the extensions that you want to import ;extension= ... .dll
and install it correctly via sudo apt-get install php-...
note: ...
is the extension name you want to enable.
回答8:
I had the same problem on XAMPP for Windows when I try to install composer.
I did php -v
and php throwing error :
Unable to load dynamic library '/xampp/php/ext/php_bz2.dll'
It took me a while until I realized that I need to setup my XAMPP. So I run setup_xampp.bat
and php return to works like a charm.
回答9:
After Windows 10 XAMPP
now I installed LAMPP (XAMPP)
on Ubuntu. Windows XAMPP
had a lot less to configure compare to MAC (iOS) but now with Linux Ubuntu I had a few more since there are more going in Linux (a good thing).
I confused and activated mysqli.dll
(and mysql.dll: erase "#" in /etc/php/7.2/cli/php.ini
I started to get the PHP Warning: PHP Startup: Unable to load dynamic library
message related to dll
. I commented out mysql(and i).dll
in the same file but the message didn't go away up until I commented out " " in /opt/lampp/etc/php.ini
.
Looks like XAMPP reads php.ini
file from /etc/php/7.2/cli
and makes modification in php.ini
of /opt/lampp/etc
. (;extension=php_pdo_mysql.dll after ";" restarted Apache and no more any message.
回答10:
I encountered a similar error. The mistake I made was to use the "controller" name as "Pages" instead of "pages" in my url.
回答11:
I had this error on a number of modules when I had been running different versions of PHP side by side on my server. To sort this out, I needed to install the packages it couldn't find for that specific PHP version. So, for example, if I saw:-
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/xml.so'
I would install the library for the PHP version specifically:-
sudo apt-get install php7.1-xml
And then restart Apache. Fixed it for me. You can check your version like this:-
php -v
回答12:
In Windows, it could be a wrong path in "System environment variables". "Path" to the php.exe directory must be the good one.
回答13:
Look for the exact extension for your PHP version here
来源:https://stackoverflow.com/questions/55288668/php-warning-php-startup-unable-to-load-dynamic-library-gearman-so