Paylaşılan bir php.ini dosyasında include_path Ayarı

2 Cevap

Kimin genel yapılandırma Ben sync'd tutmak isteyen 2 Mac'ler. Apache ve PHP için benim Dropbox conf dosyaları (httpd.conf ve php.ini, sırasıyla) depolamak (~/Dropbox/config) ve beklenen yerden paylaşılan başvurmak için sembolik kullanabilirsiniz.

Benzer şekilde, ben aynı şekilde kod üsleri birkaç paylaşmak. Fiziksel dosya ~/Dropbox/Development bulunan ve ~/Development/ den bağlantılıdır. Şimdi yarar sınıfları bir kütüphane paylaşmak gerekiyor ve ben bunu nasıl anlamaya olamaz. Sorun oyunda her dizini benim ev dizini içinde oturur ve benim adınızı, her makinede farklı olmasıdır. Birinde, bu ~/rwilkerson ve diğer ~/rob bulunuyor.

Nasıl benim php.ini bu sorunu çözmek için alabilirim? Benim httpd.conf, ben çevre değişkenleri kullanarak bunu yaptık. Örneğin, bir sanal konak yapılandırma dosyasında, ben /Users/${SUDO_USER}/path/to/webroot benim web kök ayarlayabilirsiniz. Ben Apache yeniden sudo kullanmak beri (sudo apachectl restart), ortam değişkeni ben değilim hangisi makine üzerinde doğru kullanıcı adı değerlendirir.

Bildiğim kadarıyla söyleyebilirim, ben benzer bir şekilde benim php.ini değişkenleri kullanamazsınız. Ben düşündüm ben sadece hem yolları dahil eğer benim include_path, PHP sadece belirli bir makinede yok birini görmezden olurdu, ama bu durum görünmüyor. Doğru yolu before yanlış bir yol görünür eğer benim paylaşılan kütüphaneleri tek dahil edilecektir.

Ben include_path direktifi nasıl çalıştığını nüansları dile herhangi bir kaynak bulamıyor, bu yüzden bu belirgin sınırlama etrafında herhangi bir yolu bulamıyor. Herkes herhangi bir fikir var mı?

Answer:

Ben aşağıda StasM çözümü # 1 kullanarak sona erdi. (Paylaşılan) Benim httpd.conf dosyasında, ben ekledi:

php_value include_path "/opt/local/lib/php:${HOME}/Dropbox/Development/lib/php/classes"

Bu overrode php.ini herhangi bir değer yapıyor ve güzel çalıştı.

2 Cevap

include_path yoktur dizinleri görmezden gerekir. Ama bunun yanı sıra, size birini yapabilirsiniz:

  1. php_value direktifi yoluyla include_path ayarlamak için httpd.conf kullanma
  2. Eğer 5.3 çalıştırırsanız kullanarak user_ini.filename
  3. auto_prepend_file doğru yolu dahil hesaplamak ve birbirlerine komut önce set_include_path() ile belirleyecek bir komut dosyası eklemek için kullanın.

ben de birkaç makine (tüm Mac'ler) geliştirmek ve bana senkronize her şeyi tutmak için kolay yolu git, dropbox ve Zend_Config oldu.

Ben bir ebeveyn git dizini, / git ve sonra her bir proje, her / git / ProjectA / git / ProjectB. Bu şekilde $ HOME konular ile ilgili ya da ~ / değil

Herhangi bir değişiklik i Dropbox itmek yok ve gerçek zamanlı olarak tüm makineler arasında eşitler.

Zend_Config ile i genellikle vb dış kitaplıkları, db params, işaret edecek / etc / projecta.ini saklamak her proje için bir yapılandırma dosyası var

Bildiğim kadarıyla paylaşılan kütüphaneler gibi, ben tüm bağımlılıkları var benim projelerin her tutmaya çalışın. Her proje uygulama, html / halk, kütüphane. Ve kütüphane klasör, vb armut, zend, var itmek olacaktır.

Bildiğim kadarıyla include_path sorun olarak neden bütün makinelerin ortak bir dizinde olduğunu saklamaz. / Sonra usr / local / lib / tüm kütüphaneler için php ve Dropbox ve tüm projeleri ile aynı yapmak için sembolik bir link. Sonra uygulama / usr / local / lib / php include_path set veya set php.ini söyledi.