[debian] waar komen lokale instellingen van PHP vandaan?

Pagina: 1
Acties:

  • Johnny
  • Registratie: December 2001
  • Laatst online: 27-01 15:39

Johnny

ondergewaardeerde internetguru

Topicstarter
Ik heb een webserver met daarop Debian, DirectAdmin, Apache 2 en PHP5. Met een PHP-script probeer ik een bestand uit te lezen in /etc, en kan dit niet verplaatsen, alle gebruikers hebben ook leesrechten op het bestand.

Het probleem is dat ik het bestand niet via PHP kan benaderen, omdat het niet in de lijst van toegestane paden staat.

code:
1
PHP Warning:  is_dir(): open_basedir restriction in effect. File(/etc/virtual) is not within the allowed path(s): (/home/usrename/:/tmp:/usr/local/lib/php/) in /home/username/domains/example.com/public_html/admin/mailinglist/list.php on line 9


In de phpinfo() staat het volgende:
code:
1
2
Directive      Local Value                              Master Value
open_basedir    /home/username:/tmp:/usr/local/lib/php/ no value


Het probleem is dus dat een lokale instelling de globale overschrijft, maar er wordt nergens aangegeven waar deze lokale vandaan komt. Het staat niet in php.ini, httpd.conf, of een .htaccess bestand. Zoeken met grep levert tot nu toe ook niks op. Het overriden van de open_basedir via .htaccess werkt ook niet.

Waar haalt PHP deze instellingen vandaan en hoe kan ik ze wijzigen?

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Verwijderd

Zie phpinfo() om te kijken welke configuratiebestanden worden ingeladen.

  • Johnny
  • Registratie: December 2001
  • Laatst online: 27-01 15:39

Johnny

ondergewaardeerde internetguru

Topicstarter
Er staan geen andere configuratiebestanden bij:

code:
1
2
3
4
Configuration File (php.ini) Path   /usr/local/lib
Loaded Configuration File   /usr/local/lib/php.ini
Scan this dir for additional .ini files     (none)
additional .ini files parsed    (none)


code:
1
2
3
4
5
; open_basedir, if set, limits all file operations to the defined directory
; and below.  This directive makes most sense if used in a per-directory
; or per-virtualhost web server configuration file. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
open_basedir =

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


  • EnigmA-X
  • Registratie: Februari 2002
  • Laatst online: 24-01 10:58
Wilde gok, de config van Apache?

Al gekeken in /etc/apache2/sites-enabled en /etc/apache2/sites-available wat naar wat linkt en welke settings daar staan?

  • Johnny
  • Registratie: December 2001
  • Laatst online: 27-01 15:39

Johnny

ondergewaardeerde internetguru

Topicstarter
Het was inderdaad een config van Apache, maar dan eentje die door DirectAdmin automatisch wordt gegenereerd voor iedere user, op de volgende locatie: /usr/local/directadmin/data/users/username/httpd.conf

Je kan dit bestand niet zomaar aanpassen omdat het steeds wordt overschreven, en het moet via DirectAdmin:
To change the open_basedir value when using php in CLI mode (not suPhp), you can do so by going to:

Admin Level -> Custom httpd configuration -> domain.com

In the top text area, insert this one line:

|?OPEN_BASEDIR_PATH=`HOME`/:/tmp:/usr/local/lib/php/|
which is the default value in the templates. Edit the paths in that line to meet your needs.
http://help.directadmin.com/item.php?id=182

Na een graceful restart van Apache was de configuratie aangepast.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.