i am using this command to install memcache (it do not work for other extensions)
C:\php>pecl install memcache
and it is the result :
downloading memcache-2.2.7.tgz ...
Starting to download memcache-2.2.7.tgz (36,459 bytes)
..........done: 36,459 bytes
11 source files, building
WARNING: php_bin C:\php\php.exe appears to have a suffix .exe, but config variable p
fix does not match
ERROR: The DSP memcache.dsp does not exist.
i always get this error
ERROR: The DSP memcache.dsp does not exist.
what should i do?
Do not try to compile it from source on windows but get a pre-compiled .dll file from http://pecl.php.net/package/memcache
You'd need a whole development environment with visual studio to be able to compile the extension from sources. That's probably not what you want.
Related
I am having trouble installing zendopcache. When I am running
pecl install zendopcache-7.0.3
I am getting the following:
downloading zendopcache-7.0.3.tgz ...
Starting to download zendopcache-7.0.3.tgz (Unknown size)
....done: 3,582 bytes
Could not get contents of package "/tmp/pear/download/zendopcache-7.0.3.tgz". Invalid tgz file.
Download of "pecl/zendopcache" succeeded, but it is not a valid package archive
Error: cannot download "pecl/zendopcache"
Download failed
install failed
I have looked around for similar issues and I found some suggestion about adding -Z to the install command. This seems to only change the name of the requested file from zendopcache-7.0.3.tgz to zendopcache-7.0.3.tar but the output remains the same (yes, it still complains that a .tar is not a valid .tgz).
I am running Debian 7 Wheezy with PHP 5.4.4-14+deb7u14
I have seen similar issues reported but none had working answers.
Can someone help?
Thanks!
seems there was a temporary issue with the pecl & pear servers. nevermind
I am trying of install the dependency manager for php "composer", but "composer" needs the extension "phar". I've realized php6 comes with phar by default, but is disabled and not necessary in order to execute "phar" files.
When I try execute "composer.phar" (in the cmd: php composer.phar) it throws the error:
Fatal error: Class 'Phar' not found in composer.phar on line 13.
If I try to execute the Composer installer, "installer.php" (in the cmd: php installer.php) throws this error:
Some settings on you machine make composer unable to work properly. Make sure that you fix the issues listed below and run this script again:
The phar extension is missing. How can I fix this?
Should I install it or recompile php without --disable-phar I am using appserv 2.6.4 (apache 2.2, php6, mysql 4).
You really shouldn't use cutting edge theoretical software. PHP6 doesn't actually exist. Downgrading to a more realistic version of appserv would solve your problem. But if you insist on using 2.6.4, you should do the following:
check that phar.so exists in the php extensions directory. If not, you need to install that extension.
if it exists, check if it's listed in php.ini as extension=phar.so. If it's not, add that line.
if it is, check that it's listed in the php.ini that command line PHP uses, too. Command line PHP and web PHP sometimes use different php.ini files, and while one might have phar.so activated, the other might not.
I have downloaded and installed Imagick, added it to the system path and successfully tested the installation.
Also, I've downloaded the php_imagick.dll and put it in my php/ext/ folder.
Finally, I added this extension=php_imagick.dll in the php.ini file.
(Following this tutorial)
Running php via localhost gives me the following error (php does not crash):
Fatal error: Class 'Imagick' not found in C:\wamp\www\ ...
When inspecting dependencies of php_imagick.dll with a program called 'Dependency Walker', I see the this.
Tried to fix it (without success) by :
using different versions of Imagick installation
using older php_imagick.dll versions
multiple reboots of the system
relocating dependent dll's (this causes a dependency 'cannot find' chain reaction)
So, I think I'm supposed to look for a dependency location fix, but I haven't found one yet.
You are probably looking for this: http://valokuva.org/
There you will find steps on how to install imagick on windows.
I am trying to compile the imagemagick (imagick) extension to use in a non-thread-safe environment on windows.
I am using PHP 5.3.10 and have set up Visual C++ express as my compiling environment.
The problem is that I am using a non-thread-safe version of PHP as a FCGI module in Apache 2.2.
Thus, my PHP is supplied with a php5.lib and not a php5ts.lib. I believe this is the reason why I am getting these errors:
imagick.obj : error LNK2019: unresolved external symbol __imp__tsrm_mutex_alloc referenced in function _zm_startup_imagick
I have only ever built and compiled things on linux, so am not too sure how to do this on a windows environment.
How can I compile the extension so that it is non-thread-safe?
I downloaded the threadsafe binary of PHP 5.3.10 to get a copy of php5ts.lib. I was then able to compile the extension.
I am guessing that setting the ZTS preprocessor directive to either 1 or 0 would cause the extension to compile as either threadsafe or non-thread-safe. (Not too sure about this, so if someone could let me know if this is correct or not, it would be much appreciated. :) )
I then set up a virtual machine running Windows 7 and installed the latest version of WAMP. Reason being that it used a threadsafe version of PHP.
I placed the dll in the ext folder in the PHP installation and enabled it in php.ini. However, even after trying both the ts and nts version in WAMP, I would get:
PHP Warning: PHP Startup: Unable to load dynamic library 'c:/wamp/bin/php/php5.3.10/ext/imagick.dll' - The specified module could not be found.
in Unknown on line 0
But the thing is that c:/wamp/bin/php/php5.3.10/ext/imagick.dll' does exist, and yes I have checked this a lot of times.
I then downgraded ImageMagick to 6.6.2-10-Q16, but still see the same problem.
The same issue occurs on my dev machine running a nts version of PHP 5.3.10 on Apache 2.2 (all installed manually).
Looks like I could be wrong regarding the ZTS preprocessor. If I set ZTS=0 and compile, using dependency walker on the compiled dll still shows that it requires php5ts.dll which is only present on threadsafe versions of PHP.
I did more tinkering with dependency walker and found that I had to statistically link to msvc100d.dll. I then removed ZTS in the preprocessor definition and was able to compile using php5.lib instead of php5ts.dll. I think this should get me a non-ts dll.
However, when loading the extension, I am still getting:
PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) 'imagick.dll' in Unknown on line 0
And errors from dependency walker:
Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.
Error: Modules with different CPU types were found.
Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.
Installed visual c++ express 2008 and compiled using platform toolkit v90, but still facing the same issues.
Any tips appreciated :)
Solution Found! See my answer.
Got it! I hope this can help those compiling php extensions on windows in the future. What I have done is based on: https://wiki.php.net/internals/windows/stepbystepbuild
Note: I read an answer on this site that said compiling PHP extensions by itself on windows is unsupported. Based on my experiments yesterday, it seems to be a lot of work as well, so I am using the PHP build process.
The best way is to use the PHP build process.
Install Visual C++ Express 2008 (any version will do, but express is free) and Windows SDK 6.1 (note that we want the 6.1 version not anything older or newer).
Install the SVN client tools if you haven't done so and restart for your PATH variable to take effect.
Get the PHP SDK binary tools and extract it to C:\php-sdk.
Start the CMD Shell under Microsoft Windows SDK v6.1 in your start menu and run cd C:\php-sdk.
Run setenv /x86 /xp /release this creates a 32-bit release. You can use /x64 to build a 64-bit release (I have not tried this).
run bin\phpsdk_setvars.bat
run bin\phpsdk_buildtree.bat php53dev
Download the PHP source code and extract it to C:\php-sdk\php53dev\vc9\x86 so that you end up with C:\php-sdk\php53dev\vc9\x86\php5.3-xyz
Download the latest deps and extract everything to C:\php-sdk\php53dev\vc9\x86. You may be prompted to overwrite any existing folders, so press yes.
run cd C:\php-sdk\php53dev\vc9\x86
Check out the latest version of your extension from the svn repository: svn co http://svn.php.net/repository/pecl/imagick/trunk pecl/imagick I am checking out imagick here.
Install any dependencies. In my case, I need to install ImageMagick, so I downloaded the latest recommended windows binary. You will need to restart after installation to update your PATH variable, but you can do this after you have compiled. Make sure you install the C/C++ headers and includes as well.
Copy the contents of the includes directory from the ImageMagick install directory to C:\php-sdk\php53dev\vc9\x86\deps\include.
Copy the contents of the lib directory from the ImageMagick install directory to C:\php-sdk\php53dev\vc9\x86\deps\lib
Now, let's build: run cd C:\php-sdk\php53dev\vc9\x86\php5.3-xyz then buildconf then configure --help. Look at the help properly. It will show you all config flags and any avaliable extensions to enabled. In my case, since I added imagick, I had an option called --with-imagick
Run config: configure --enable-cli --with-imagick=shared --disable-zts If you want to build a non-thread-safe binary use --disable-zts, otherwise remove that configuration flag. I am not sure why, but sometimes extensions use the --with-myextension flag and sometimes --enable-myextension, so check configure --help for the flag to use. If you add =shared after the extension flag, it will be compiled as a separate DLL, which si what we want.
Compile: run nmake then nmake snap.
Done :) Check C:\php-sdk\php53dev\vc9\x86\php-5.3.10\Release (non-thread-safe) or C:\php-sdk\php53dev\vc9\x86\php-5.3.10\Release_TS (thread-safe). Your compiled binaries should be in there. The compiled extensions (pecl), should be in a ZIP file similiar to pecl-5.3.10-nts-Win32-VC9-x86.zip. Open this file and extract the extensio DLL to your ext folder in your PHP installation.
Enable the PHP extension and restart your webserver. Run phpinfo() and check that the extension is enabled.
If the extension does not work properly, make sure you reboot to update your PATH variable. In my case, I need to have the imagemagick install directory in my PATH variable.
???
Profit!
Is there a reason you need to compile? Why not download? It's usually much simpler/quicker on Windows.
VC6: http://www.sk89q.com/2010/03/vc6-windows-binaries-for-imagick-2-3-0/
VC9: http://valokuva.org/builds/
Trying to install phpunit test-helpers ( https://github.com/sebastianbergmann/php-test-helpers )
C:\>pecl install phpunit/test_helpers
downloading test_helpers-1.1.0.tgz ...
Starting to download test_helpers-1.1.0.tgz (10,370 bytes)
.....done: 10,370 bytes
4 source files, building
WARNING: php_bin C:\wamp\bin\php\php5.3.8\php.exe appears to have a suffix \php5.3.8\php.exe, but config variable php_suffix does not match
ERROR: The DSP test_helpers.dsp does not exist.
Using "pecl config-set php_suffix .exe" did not change anything. Unfortunately no recent precompiled DLL's are available to try setting them up manually.
Seems like it's an issue with the test-helpers distribution package.
See the issue and comments: https://github.com/sebastianbergmann/php-test-helpers/issues/6#issuecomment-3654335
If anyone knows how to fix it, it would be great! :)
Note: the Test-Helper extension is superseded by https://github.com/krakjoe/uopz