Results 1 to 7 of 7
  1. #1
    Join Date
    Apr 2007
    Posts
    3,513

    PHP and Application Configuration Files

    Hi All,

    I am currently writing a PHP application that edit's the configuration file (text file) for a Linux application.

    For example like cPanel would edit the configuration file for Apache when configuring websites.

    Any recommendations on the best way to go about doing it?

    I get the feeling with all the possible configurations just hacking it together without a plan will make things messy

    Cheers!
    - Buying up websites, side-projects and companies - PM Me! -

  2. #2
    Join Date
    Mar 2011
    Posts
    41

  3. #3
    You would want to use the file system functions in PHP. fopen, fread, fwrite, file_get_contents, and some other ones that you can see for yourself on their website (PHP.net).

    A simple example of how to write to a text file:

    Code:
    <?php
    $filename = 'test.txt';
    $string = "This is some text that will be written to the test file!";
    
    $fp = fopen($filename, 'w');
    fwrite($fp, $string);
    fclose($fp);
    ?>
    Hope this helps.
    DoHost.US Real affordable Dedicated Servers | VPS Hosting | WHM\Master Reseller| Shared web hosting | Domain register Reseller.
    5 Years in business. USA and France Locations, 24/7 Service live watch
    DoHost.us Where to Do Host.

  4. #4
    Join Date
    Dec 2005
    Posts
    3,077
    Bear in mind that cPanel also uses a lot of bash scripts in conjunction with PHP to make things possible (in /scripts/ directory).

    You might be able to save some time by incorporating some of those into your PHP code, just be sure to add some sanity checks etc

  5. #5
    Join Date
    Apr 2007
    Posts
    3,513
    Quote Originally Posted by DoHost View Post
    You would want to use the file system functions in PHP. fopen, fread, fwrite, file_get_contents, and some other ones that you can see for yourself on their website (PHP.net).

    A simple example of how to write to a text file:

    Code:
    <?php
    $filename = 'test.txt';
    $string = "This is some text that will be written to the test file!";
    
    $fp = fopen($filename, 'w');
    fwrite($fp, $string);
    fclose($fp);
    ?>
    Hope this helps.
    Yeh I understand how to open and edit the file etc...

    However if you look at the my.cnf example below it's quite a big file with many variables and configuration options, something like a http virtual hosts file would be even more complicated.

    Editing something like this could get very messy in PHP


    Code:
    #---------------------------------------------------------------------------
    # Example MySQL config file for large systems.
    #
    # This is for a large system with memory = 512M where the system runs mainly
    # MySQL.
    #
    # You can copy this file to
    # /etc/my.cnf to set global options,
    # mysql-data-dir/my.cnf to set server-specific options (in this
    # installation this directory is @localstatedir@) or
    # ~/.my.cnf to set user-specific options.
    #
    # In this file, you can use all long options that a program supports.
    # If you want to know which options a program supports, run the program
    # with the "--help" option.
    
    # The following options will be passed to all MySQL clients
    [client]
    #password	= your_password
    port  = 8008
    socket  = /var/lib/mysql/mysql.sock
    
    # Here follows entries for some specific programs
    
    # The MySQL server
    [mysqld]
    port  = 8008
    socket  = /var/lib/mysql/mysql.sock
    skip-locking
    
    # Caches and Buffer Sizes
    key_buffer = 256M
    max_allowed_packet=16M
    table_cache = 256
    sort_buffer_size = 2M
    read_buffer_size = 2M
    read_rnd_buffer_size = 4M
    record_buffer = 1M
    myisam_sort_buffer_size = 128M
    thread_cache = 128
    query_cache_limit = 2M
    query_cache_type = 1
    query_cache_size = 32M
    key_buffer = 16M
    join_buffer = 2M
    table_cache = 1024
    
    #Time Outs
    interactive_timeout = 100
    wait_timeout = 100
    connect_timeout = 10
    
    # Try number of CPU's*2 for thread_concurrency
    thread_concurrency = 2
    
    # Maximum connections allowed
    max_connections = 500
    max_user_connections = 50
    max_connect_errors = 10
    
    # Don't listen on a TCP/IP port at all. This can be a security enhancement,
    # if all processes that need to connect to mysqld run on the same host.
    # All interaction with mysqld must be made via Unix sockets or named pipes.
    # Note that using this option without enabling named pipes on Windows
    # (via the "enable-named-pipe" option) will render mysqld useless!
    # 
    #skip-networking
    
    # Replication Master Server (default)
    # binary logging is required for replication
    log-bin
    
    # required unique id between 1 and 2^32 - 1
    # defaults to 1 if master-host is not set
    # but will not function as a master if omitted
    server-id	= 1
    
    # Replication Slave (comment out master section to use this)
    #
    # To configure this host as a replication slave, you can choose between
    # two methods :
    #
    # 1) Use the CHANGE MASTER TO command (fully described in our manual) -
    #    the syntax is:
    #
    #    CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,
    #    MASTER_USER=<user>, MASTER_PASSWORD=<password> ;
    #
    #    where you replace <host>, <user>, <password> by quoted strings and
    #    <port> by the master's port number (3306 by default).
    #
    #    Example:
    #
    #    CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
    #    MASTER_USER='joe', MASTER_PASSWORD='secret';
    #
    # OR
    #
    # 2) Set the variables below. However, in case you choose this method, then
    #    start replication for the first time (even unsuccessfully, for example
    #    if you mistyped the password in master-password and the slave fails to
    #    connect), the slave will create a master.info file, and any later
    #    change in this file to the variables' values below will be ignored and
    #    overridden by the content of the master.info file, unless you shutdown
    #    the slave server, delete master.info and restart the slaver server.
    #    For that reason, you may want to leave the lines below untouched
    #    (commented) and instead use CHANGE MASTER TO (see above)
    #
    # required unique id between 2 and 2^32 - 1
    # (and different from the master)
    # defaults to 2 if master-host is set
    # but will not function as a slave if omitted
    #server-id      = 2
    #
    # The replication master for this slave - required
    #master-host    =  <hostname>
    #
    # The username the slave will use for authentication when connecting
    # to the master - required
    #master-user    =  <username>
    #
    # The password the slave will authenticate with when connecting to
    # the master - required
    #master-password =  <password>
    #
    # The port the master is listening on.
    # optional - defaults to 3306
    #master-port    =  <port>
    #
    # binary logging - not required for slaves, but recommended
    #log-bin
    
    # Point the following paths to different dedicated disks
    #tmpdir  = /tmp/  
    #log-update  = /path-to-dedicated-directory/hostname
    
    # Uncomment the following if you are using BDB tables
    #bdb_cache_size = 64M
    #bdb_max_lock = 100000
    
    # Uncomment the following if you are using InnoDB tables
    innodb_data_home_dir = /var/lib/mysql/
    innodb_data_file_path = ibdata1:10M:autoextend
    innodb_log_group_home_dir = /var/log/innodblogs/
    innodb_log_arch_dir = /var/log/innodblogsarchive/
    # You can set .._buffer_pool_size up to 50 - 80 %
    # of RAM but beware of setting memory usage too high
    innodb_buffer_pool_size = 160M
    innodb_additional_mem_pool_size = 20M
    # Set .._log_file_size to 25 % of buffer pool size
    innodb_log_file_size = 40M
    innodb_log_buffer_size = 8M
    innodb_flush_log_at_trx_commit = 1
    innodb_lock_wait_timeout = 50
    
    [mysqldump]
    quick
    max_allowed_packet = 16M
    
    [safe_mysqld]
    #err-log=/var/log/mysqld.log
    #pid-file=/var/lib/mysql/mysql.pid <-- Not necessary
    open_files_limit=8192
    
    
    [mysql]
    no-auto-rehash
    # Remove the next comment character if you are not familiar with SQL
    #safe-updates
    
    [isamchk]
    key_buffer = 128M
    sort_buffer_size = 128M
    read_buffer = 2M
    write_buffer = 2M
    
    [myisamchk]
    key_buffer = 128M
    sort_buffer_size = 128M
    read_buffer = 2M
    write_buffer = 2M
    
    [mysqlhotcopy]
    interactive-timeout/log
    #------------------------------------------------------------------------------------------
    - Buying up websites, side-projects and companies - PM Me! -

  6. #6
    Join Date
    Dec 2005
    Posts
    3,077
    You should let cPanel's scripts take care of Apache Virtualhosts, if you dont things will break when cPanel makes a change to the file, as it rebuilds the Apache configuration file from a datastore directory.

    For editing files, can you not search for a specific variable/phrase then edit that?

  7. #7
    Join Date
    Apr 2007
    Posts
    3,513
    Virtual hosts and cPanel were just an example to show the complexity of the configuration file that I am looking at, it's not actually cPanel/Apache

    Yeh, searching for variables is probably the way I am going to end up doing it.

    However I was just wondering if people had and first hand experience/pointers for doing it, or shortcut's
    - Buying up websites, side-projects and companies - PM Me! -

Similar Threads

  1. Replies: 17
    Last Post: 10-30-2010, 09:20 PM
  2. Dealing with virus infected files in a file uploading web application (PHP)
    By texens in forum Hosting Security and Technology
    Replies: 10
    Last Post: 04-06-2010, 12:19 PM
  3. All my files and configuration got lost on cirtex
    By bangzhong in forum Web Hosting
    Replies: 7
    Last Post: 06-23-2007, 12:28 AM
  4. I need someone to transfer server configuration/files for me...
    By IsMaR in forum Employment / Job Offers
    Replies: 3
    Last Post: 09-14-2006, 01:11 AM
  5. Nagios 2.0 configuration files ???
    By Markwaugh in forum Hosting Security and Technology
    Replies: 1
    Last Post: 02-17-2005, 10:41 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •