Tôi đã cài đặt Imagemagick bằng Homebrew trên Lion, mọi thứ đều ổn, ngoại trừ việc nó không hoạt động khi được gọi từ php. Console:Đã giải quyết: MAMP Php không thể thực hiện ('chuyển đổi') sau khi Homebrew ImageMagick cài đặt
$ convert -version
Version: ImageMagick 6.7.1-1 2011-07-29 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2011 ImageMagick Studio LLC
Features: OpenMP
$ which convert
/usr/local/bin/convert
PHP:
echo exec ('convert -version');
hoặc exec ('chuyển đổi -version', $ đầu ra); var_dump ($ output);
Không tạo ra gì (hoặc mảng trống).
exec ('/usr/local/bin/convert') // works, but
exec ('which convert') // doesn't
Tôi cần thử nghiệm tại địa phương này để đảm bảo tôi có thể phát hiện chuyển đổi trong môi trường sản xuất. Nhưng tôi không thể kiểm tra nó đúng cách. PATH được thiết lập và nó hoạt động trong Terminal, nhưng không phải từ PHP.
giải quyết:
Hóa ra, cho php để làm việc convert
phải ở trong /usr/bin/
vì vậy đây giải quyết nó:
ln -s /usr/local/bin/convert /usr/bin/convert
Cập nhật
Đó là becasue của MAMP, đây là bản sửa lỗi: http://firedevcom.tumblr.com/post/22791937644/fix-for-homebrew-imagemagick-and-mamp
mở/Applications/MAMP/Library/bin/envvars
Và nhận xét ra các dòng sau:
DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH
Xong.
Chuyển đổi trong đường dẫn của PHP? Bạn có thể phải chỉ định một '/ absolute/path/to/convert' trong lệnh exec(). Hãy nhớ rằng môi trường trong một cuộc gọi hàm exec() PHP có thể khác biệt đáng kể so với những gì bạn nhận được ở dấu nhắc trình bao. –
Hmm điều là - tất cả mọi thứ hoạt động trên máy chủ sản xuất, chỉ cần không phải với Homebrew. Tôi nghĩ PATH nên được thừa hưởng vào hộp cát exec, không? – firedev
Môi trường shell của php hoàn toàn khác với môi trường shell của người dùng. bạn không thể so sánh chúng trực tiếp. hãy thử thực hiện 'exec ('echo $ PATH');' để xem những gì mà shell đã đi. PHP sẽ kế thừa môi trường Apache. –