PHP 5.6.14'ü Mac OS X 10.11'e (El Capitan) nasıl kurabilirim?


1

Geçenlerde OS X Yosemite'den El Capitan'a yükselttim ve PHP'yi yeniden kurmam gerekiyordu. Böylece php'yi indirdim (sürüm 5.6.14), ./configuredosyayı koştum ve sonra koştum sudo make. Ancak, bunu yaparken, derleme aşağıdaki izleyen iletilerle başarısız olur:

ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [sapi/cli/php] Error 1

Mac OS X 10.9.5 (Yosemite) iken bu mesaja hiç rastlamadım.

Bu mesajı nasıl çözebilirim? Sistem Bütünlüğü Korumasını (SIP) devre dışı bırakmayı devre dışı bırakmayı denedim.


Neden PHP'yi kaynak kodundan derliyorsunuz? Sadece MAMP'ı indirin ve bu tür şeyler hakkında iki kez düşünmeyin. Mac OS X'deki kaynaktan derlemek böyle bir şey için bir acıdır ve size kederden başka bir şey vermez.
JakeGould

1
Kaynak koddan derliyorum çünkü PHP'yi MAMP ile kullanılamayan uzantılarla derlemeliyim.
Leo Galleguillos

Yeterince adil. configureKomutunuzun ne olduğu ve belki de kullandığınız herhangi bir otomatik araç komutları gibi derleme prosedürünüzü ana hatlarıyla belirtmek için cevabınızı düzenleyebilmeniz mümkün olabilir mi?
JakeGould

Yanıtlar:


2

Buna göre, bu GitHub sorunu raporu, Mac OS X 10.11'de (El Capitan) PHP 5.6.11 beta oluşturmaya bağlı, bununla ilgili temel sorun libxml2. Homebrew durumunda önerileri bu brew linkemri yerine getirmektir:

brew link libxml2 --force

Ancak, saf kaynak kodundan derliyorsanız, bunun nasıl kullanılacağından% 100 emin değilsiniz.

Bununla birlikte, bu Nokogiri Gist'te tartışılan benzer bir mesele buldum - “libxml2 bir pislikse ne yapmalı?” Başlıklı konuya değindi ve ipuçları açıkça LibXML2'ye işaret ettiğini gösteriyor:

--with-xml2-include=/usr/local/include/libxml2

Ancak - tabii ki - bu Nokogiri'nin yapılandırma seçenekleri için olurdu. Ancak resmi PHP belgelerine bakmak aşağıdakileri açıklar:

İsteğe bağlı --with-libxml-dir yönergesi, PHP'nin derlendiği sistemde libxml'nin konumunu belirtmek için kullanılır , aksi takdirde sadece varsayılan konumlar taranır.

Bu yüzden ekleyerek görünüyor bilerek --with-libxml-dirsizin için ./configureolarak ayarlanmış bir yol ile komut şey aşağıda olmalıdır çalışır:

--with-libxml-dir=/usr/local/include/libxml2

Bununla birlikte, bu kişinin web sitesinde Mac OS X 10.10.5 ve Mac OS X 10.11 ile başa çıkabilmek için güncellenmiş Mac OS X'te PHP 5.5.24'ün nasıl derleneceğine dair güzel bir rehber bulunmaktadır. ./configureKomuta bakarsanız, o kişinin kullandığını görebilirsiniz --with-libxml-dir=/usr. Bilgi PHP 5.5.24 için sunulurken, PHP 5.6.14 için aynı işlem yapılmadığında benzer olması gerektiğini düşünüyorum. İşte ./configurereferans için tam komut:

./configure '--prefix=/usr' \
  '--mandir=/usr/share/man' \
  '--infodir=/usr/share/info' \
  '--sysconfdir=/private/etc' \
  '--with-apxs2=/usr/sbin/apxs' \
  '--enable-cli' \
  '--with-config-file-path=/etc' \
  '--with-config-file-scan-dir=/Library/Server/Web/Config/php' \
  '--with-libxml-dir=/usr' \
  '--with-openssl=/usr' \
  '--with-kerberos=/usr' \
  '--with-zlib=/usr' \
  '--enable-bcmath' \
  '--with-bz2=/usr' \
  '--enable-calendar' \
  '--disable-cgi' \
  '--with-curl=/usr' \
  '--enable-dba' \
  '--with-ndbm=/usr' \
  '--enable-exif' \
  '--enable-fpm' \
  '--enable-ftp' \
  '--with-icu-dir=/usr' \
  '--with-ldap=/usr' \
  '--with-ldap-sasl=/usr' \
  '--with-libedit=/usr' \
  '--enable-mbstring' \
  '--enable-mbregex' \
  '--with-mysql=mysqlnd' \
  '--with-mysqli=mysqlnd' \
  '--without-pear' \
  '--with-pear=no' \
  '--with-pdo-mysql=mysqlnd' \
  '--with-mysql-sock=/var/mysql/mysql.sock' \
  '--with-readline=/usr' \
  '--enable-shmop' \
  '--with-snmp=/usr' \
  '--enable-soap' \
  '--enable-sockets' \
  '--enable-sysvmsg' \
  '--enable-sysvsem' \
  '--enable-sysvshm' \
  '--with-tidy' \
  '--enable-wddx' \
  '--with-xmlrpc' \
  '--with-iconv-dir=/usr' \
  '--with-xsl=/usr' \
  '--enable-zip'

1

Özellikle daha yeni bir sürüme ihtiyacınız yoksa, PHP 5.5.27, OS X El Capitan ile birlikte gelir.

Httpd.conf'un LoadModule php5_module libexec/apache2/libphp5.soiçindeki satırdan önce uncomment (#) 'ı kaldırabilirsiniz ( sudo nano /etc/apache2/httpd.conferişmek için kullanın ).


1
Evet, belirli bir sürümünü yüklemek ve belirli eklentileri (kıvrılma gibi) etkinleştirmek istiyorum. Bu yüzden komut satırından yüklemem gerekiyor.
Leo Galleguillos
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.