Arch Linux LAMP Kurulumu ve phpMyAdmin Hatalarını Çözme


Arch Linux üzerinde PHP tabanlı projeleri çalıştırmak için en kullanışlı yapılardan biri LAMP ortamıdır. 
LAMP; Linux, Apache, MariaDB/MySQL ve PHP bileşenlerinden oluşur. Bu yapı sayesinde PHP projelerini bilgisayarda yerel olarak çalıştırabilir, veritabanlarını phpMyAdmin üzerinden yönetebiliriz.


Bu yazıda Arch Linux üzerinde LAMP kurulumu yaparken karşılaşılabilecek hataları ve çözümlerini adım adım anlatıyorum. Özellikle phpMyAdmin’e girildiğinde PHP kodlarının düz metin olarak görünmesi, mysqli uzantısı eksik hatası, blowfish_secret uyarısı, TempDir erişim problemi ve Apache’nin /home klasörü altındaki www dizinini okuyamaması gibi sorunlara değineceğiz.

1. Gerekli Paketlerin Kurulması

İlk olarak Apache, MariaDB, PHP ve phpMyAdmin paketlerini kuruyoruz:

sudo pacman -Syu
sudo pacman -S apache mariadb php php-apache phpmyadmin

MariaDB veritabanını ilk kez kullanmadan önce veritabanı dizinini oluşturuyoruz:

sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

Ardından MariaDB ve Apache servislerini başlatıyoruz:

sudo systemctl enable --now mariadb
sudo systemctl enable --now httpd

2. phpMyAdmin’e Erişim Ayarı


Arch Linux üzerinde phpMyAdmin kurulduktan sonra Apache’ye otomatik olarak tanımlı gelmeyebilir. Bu yüzden Apache’ye phpMyAdmin için alias tanımlamak gerekir.

sudo nano /etc/httpd/conf/extra/phpmyadmin.conf

Dosyanın içine şu ayarları ekliyoruz:

Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"


   DirectoryIndex index.php
   AllowOverride All
   Options FollowSymLinks
   Require all granted

Daha sonra Apache ana yapılandırma dosyasını açıyoruz:

sudo nano /etc/httpd/conf/httpd.conf

Dosyanın sonuna şu satırı ekliyoruz:

Include conf/extra/phpmyadmin.conf

Apache’yi yeniden başlatıyoruz:

sudo systemctl restart httpd

Artık phpMyAdmin’e şu adresten erişebiliriz:

http://localhost/phpmyadmin

3. PHP Kodları Düz Metin Görünüyorsa


phpMyAdmin’e girildiğinde PHP kodları düz metin olarak görünüyorsa Apache PHP dosyalarını çalıştırmıyor demektir. Bu durumda Apache’nin PHP modülünü aktif etmek gerekir.

Apache yapılandırma dosyasını açıyoruz:

sudo nano /etc/httpd/conf/httpd.conf

Şu satırı yorum satırı yapıyoruz:

#LoadModule mpm_event_module modules/mod_mpm_event.so

Ardından mpm_prefork modülünün açık olduğundan emin oluyoruz:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

Dosyanın sonuna şu satırları ekliyoruz:

LoadModule php_module modules/libphp.so
AddHandler php-script .php
Include conf/extra/php_module.conf

Yapılandırmayı test ediyoruz:

sudo apachectl configtest

Çıktı şu şekildeyse ayar dosyasında sorun yoktur:

Syntax OK

Apache’yi yeniden başlatıyoruz:

sudo systemctl restart httpd

4. mysqli Uzantısı Eksik Hatası

phpMyAdmin’de şu hata görülebilir:

mysqli uzantısı eksik. Lütfen PHP yapılandırmanızı denetleyin.

Bu hata PHP’nin MySQL/MariaDB bağlantı eklentisinin aktif olmadığını gösterir. Çözmek için PHP yapılandırma dosyasını açıyoruz:

sudo nano /etc/php/php.ini

Şu satırları buluyoruz:

;extension=mysqli
;extension=pdo_mysql

Başlarındaki noktalı virgülü kaldırıyoruz:

extension=mysqli
extension=pdo_mysql

Apache’yi yeniden başlatıyoruz:

sudo systemctl restart httpd

Kontrol için şu komutu kullanabiliriz:

php -m | grep -E "mysqli|pdo_mysql"

5. phpMyAdmin Kullanıcı Adı ve Şifre


phpMyAdmin’in ayrı bir kullanıcı adı ve şifresi yoktur. MariaDB/MySQL kullanıcı adı ve şifresiyle giriş yapılır.

MariaDB’ye root yetkisiyle girmek için:

sudo mariadb

phpMyAdmin için yeni kullanıcı oluşturmak için:

CREATE USER 'admin'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

Daha sonra phpMyAdmin giriş ekranında şu bilgiler kullanılabilir:

Kullanıcı adı: admin
Şifre: 123456

Güvenlik için basit şifreler yerine daha güçlü bir şifre kullanmak daha doğru olur.

6. phpMyAdmin Blowfish Secret Uyarısı

phpMyAdmin şu uyarıyı verebilir:

Yapılandırma dosyası, tanımlama bilgisi şifrelemesi için geçerli bir anahtara ihtiyaç duyar.

Bu uyarı config dosyasında blowfish_secret değerinin eksik olduğunu gösterir.

sudo nano /etc/webapps/phpmyadmin/config.inc.php

Şu satırı buluyoruz:

$cfg['blowfish_secret'] = '';

Buraya tam 32 karakterlik bir değer yazıyoruz:

$cfg['blowfish_secret'] = 'a8Kz91LmPq2Rtx7YbN4vDs6WpQ3nHu5E';


Bu değer tam 32 karakter olmalıdır. Daha uzun yazılırsa phpMyAdmin şu uyarıyı verir:

Yapılandırma dosyasındaki tanımlama bilgisi şifreleme anahtarı gereğinden uzun.
Sadece 32 bayt uzunluğunda olmalıdır.

32 karakterlik rastgele anahtar üretmek için:

openssl rand -base64 24 | cut -c1-32

7. phpMyAdmin TempDir Uyarısı

phpMyAdmin şu uyarıyı gösterebilir:

$cfg['TempDir'] (/usr/share/webapps/phpMyAdmin/tmp/) erişilebilir değil.

Bu klasör yoksa veya Apache tarafından yazılamıyorsa bu uyarı çıkar. Çözüm için:

sudo mkdir -p /usr/share/webapps/phpMyAdmin/tmp
sudo chown -R http:http /usr/share/webapps/phpMyAdmin/tmp
sudo chmod 750 /usr/share/webapps/phpMyAdmin/tmp

Sonra Apache’yi yeniden başlatıyoruz:

sudo systemctl restart httpd

8. Site Dosyaları Hangi Klasöre Atılır?

Arch Linux’ta Apache’nin varsayılan web klasörü şudur:

/srv/http/

Yani site dosyaları buraya atılabilir:

/srv/http/index.php
/srv/http/db.php
/srv/http/assets/

Tarayıcıdan erişim:

http://localhost/

9. Apache Ana Klasörünü /home/mustafast/www Yapmak


Varsayılan /srv/http yerine kullanıcı klasörü altında www dizini kullanmak isteyebiliriz. Bunun için önce klasörü oluşturuyoruz:

mkdir -p /home/mustafast/www

Test dosyası ekliyoruz:

echo "" > /home/mustafast/www/index.php

İzinleri ayarlıyoruz:

sudo chown -R mustafast:http /home/mustafast/www
sudo chmod 755 /home/mustafast
sudo chmod -R 755 /home/mustafast/www

Apache yapılandırma dosyasını açıyoruz:

sudo nano /etc/httpd/conf/httpd.conf

Şu satırı buluyoruz:

DocumentRoot "/srv/http"

Bunu şöyle değiştiriyoruz:

DocumentRoot "/home/mustafast/www"

Aynı dosyada şu bloğu buluyoruz:

Bunu da şöyle değiştiriyoruz:


   Options Indexes FollowSymLinks
   AllowOverride All
   Require all granted

10. DocumentRoot Okunamıyor Hatası

Apache yeniden başlatılırken şu hata alınabilir:

DocumentRoot '/home/mustafast/www' is not a directory, or is not readable

Bu hata klasörün olmadığını veya Apache’nin klasöre erişemediğini gösterir. Önce klasör ve izinler kontrol edilir:

ls -ld /home/mustafast
ls -ld /home/mustafast/www

Gerekirse tekrar izin verilir:

mkdir -p /home/mustafast/www
sudo chown -R mustafast:http /home/mustafast/www
sudo chmod 755 /home/mustafast
sudo chmod -R 755 /home/mustafast/www

11. ProtectHome Sorunu


Arch Linux’ta Apache servisinde ProtectHome aktif olabilir. Bu ayar Apache’nin /home klasörünü görmesini engeller.

Servis ayarını kontrol etmek için:

sudo systemctl cat httpd

Çıktıda şu satır varsa Apache /home dizinine erişemeyebilir:

ProtectHome=on

Bunu düzeltmek için override dosyası oluşturuyoruz. Fish shell kullanıyorsanız şu komut daha uygundur:

sudo mkdir -p /etc/systemd/system/httpd.service.d
printf '[Service]\nProtectHome=false\n' | sudo tee /etc/systemd/system/httpd.service.d/override.conf > /dev/null

Systemd ayarlarını yeniliyoruz:

sudo systemctl daemon-reload

Kontrol ediyoruz:

sudo systemctl cat httpd | grep ProtectHome

Şuna benzer çıktı görünmelidir:

ProtectHome=on
ProtectHome=false

Sonra Apache yeniden başlatılır:

sudo systemctl restart httpd

12. ServerName Uyarısı

Apache config test sırasında şu uyarıyı verebilir:

AH00558: Could not reliably determine the server's fully qualified domain name

Bu genellikle kritik bir hata değildir. Uyarıyı kaldırmak için Apache ayar dosyasına şu satır eklenebilir:

ServerName localhost

Sonra yapılandırma test edilir:

sudo apachectl configtest

Çıktı şu şekildeyse sorun yoktur:

Syntax OK

Sonuç


Arch Linux üzerinde LAMP kurulumu Windows’taki WampServer kadar tek tıkla ilerlemeyebilir. Ancak Apache, MariaDB, PHP ve phpMyAdmin doğru yapılandırıldığında oldukça güçlü ve temiz bir yerel geliştirme ortamı elde edilir.


Bu süreçte karşılaşılabilecek başlıca sorunlar Apache’nin PHP dosyalarını düz metin göstermesi, mysqli uzantısı eksik hatası, phpMyAdmin blowfish_secret uyarısı, TempDir erişim hatası, Apache DocumentRoot erişim hatası ve ProtectHome nedeniyle /home dizinine erişememe problemidir.


Tüm bu ayarlar tamamlandığında Arch Linux üzerinde PHP projelerini rahatlıkla çalıştırabilir, veritabanı işlemlerini phpMyAdmin üzerinden yönetebilir ve kendi www klasörünüzü yerel geliştirme ortamı olarak kullanabilirsiniz.