рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП PHP рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


рдЙрдмрдВрдЯреВ рдПрдкрд╛рдЪреЗ 2 рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рд╡рд░реНрдЪреБрдЕрд▓ рд╣реЛрд╕реНрдЯ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЪрд╛рд▓реВ / рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд░реНрдЪреБрдЕрд▓ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдиреЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рджреЛрд╖ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдмреЗрд╢рдХ, рдЕрдкрд╛рдЪреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЙрдкрдбреЛрдореЗрди рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЬреЛ рдЕрдкрд╛рдЪреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЪреБрдЕрд▓ рд╣реЛрд╕реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╣реЛрд╕реНрдЯ рдирд╛рдо рдХреЛ / etc / рдореЗрдЬрдмрд╛рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдореИрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╕рд░рд▓ рдХрд╛рдо рдХреЗ рд▓рд┐рдП PHP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ рдореИрдВ рднреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирддрд╛ рд╣реВрдВред

рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рджреЛ рдЙрдкрдпреЛрдЧреА рдЪреАрдЬреЗрдВ рдПрдХ рд╕рд╛рде рдХрд░реЗрдВрдЧреЗ: рд╣рдо рдЦреБрдж рдХреЛ PHP рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рд╕рдВрдЪрд╛рд▓рди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдХреЛ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧрд╛ред



рдЕрднрд┐рдЧрдо рдирд┐рдпрдВрддреНрд░рдг


, , PHP

#!/usr/bin/env php





Linux.



, , , , root . :

  1. $virtual_hosts_dir = "/etc/apache2/sites-available/";
  2. if (!is_dir($virtual_hosts_dir) || !is_writable($virtual_hosts_dir))
  3. {
  4.     echo "You must run this script as root!\n";
  5.     exit;
  6. }






, , . , , . PHP $argc $argv. , тАФ . - тАФ . , :

  1. if ($argc>1) 
  2. { 
  3.     for ($i=1; $i<$argc; $i++) 
  4.     { 
  5.         $option = explode("=", $argv[$i]); 
  6.         switch ($option[0]) 
  7.         { 
  8.             case "-h": 
  9.             case "--add-to-hosts": 
  10.                 $add_to_hosts = true; 
  11.             break;
  12.  
  13.             case "-n": 
  14.             case "--no-add-to-hosts": 
  15.                 $add_to_hosts = false; 
  16.             break;
  17.  
  18.             case "-a": 
  19.             case "--server-alias": 
  20.                 if (isset($option[1])) 
  21.                 { 
  22.                     $server_alias = $option[1]; 
  23.                 } 
  24.                 else 
  25.                 { 
  26.                     echo "Wrong option: {$argv[$i]}\n"; 
  27.                 } 
  28.             break;
  29.  
  30.             case "-d": 
  31.             case "--document-root": 
  32.                 if (isset($option[1])) 
  33.                 { 
  34.                     if ($option[1] == "default") 
  35.                     { 
  36.                         $document_root = $default_doc_root 
  37.                     } 
  38.                     else if (is_dir(dirname($option[1]))) 
  39.                     { 
  40.                         $document_root = $option[1]; 
  41.                     } 
  42.                 } 
  43.                 else 
  44.                 { 
  45.                     echo "Wrong option: {$argv[$i]}\n"; 
  46.                 } 
  47.             break;
  48.  
  49.             default: 
  50.                 if (substr($argv[$i], 1, 1) == '-') 
  51.                 { 
  52.                     echo "Unknown option: {$argv[$i]}\n"; 
  53.                 } 
  54.             break; 
  55.         } 
  56.     } 
  57. }
  58.  




\


. , . \, . PHP \ STDIN, STDOUT, STDERR. , . , :

  1. $line = fgets(STDIN);


$line. , , .. PHP . , , . , \ :

  1. $stdin = fopen("php://stdin", "r");
  2. $line1 = gets($stdin);
  3. $line2 = gets($stdin);
  4. fclose($stdin);


, .

, echo.



. - , , - :

  1. while (!$server_alias)
  2. {
  3.     echo "Enter your hostname: ";
  4.     $server_alias = trim(fgets(STDIN));
  5. }




, , /etc/hosts, , . , /etc/hosts, , Enter :

  1. if ($add_to_hosts === null)
  2. {
  3.     echo "Add $server_alias to your /etc/hosts ? (Y/N) [Y]: ";
  4.     $line = trim(fgets(STDIN));
  5.     if ($line == 'n' || $line == 'N')
  6.     {
  7.         $add_to_hosts = false;
  8.     }
  9.     else
  10.     {
  11.         $add_to_hosts = true;
  12.     }
  13. }




:

  1. if (!$document_root) 
  2. { 
  3.     $default_doc_root = $default_doc_root.'/'.$server_alias; 
  4.     echo "Enter your document root [$default_doc_root]: "; 
  5.     $line = trim(fgets(STDIN)); 
  6.     if ($line && is_dir(dirname($line))) 
  7.     { 
  8.         $document_root = $line; 
  9.     } 
  10.     else 
  11.     { 
  12.         $document_root = $default_doc_root; 
  13.     } 
  14. }
  15.  




-


, , , . , , тАФ :

  1. if (!is_dir($document_root))
  2. {
  3.     mkdir($document_root);
  4. }




/etc/hosts. , :

  1. if ($add_to_hosts)
  2. {
  3.     $hosts = file_get_contents("/etc/hosts");
  4.     $hosts .= "127.0.0.1\t$server_alias\n";
  5.     file_put_contents("/etc/hosts", $hosts);
  6. }




:

  1. $host_template = <<<HOST
  2. <VirtualHost *:80> 
  3. ServerAdmin i@bogus.in 
  4. ServerAlias $server_alias
  5.  
  6. DocumentRoot $document_root 
  7. <Directory $document_root> 
  8.     Options Indexes FollowSymLinks MultiViews 
  9.     AllowOverride All 
  10.     Order allow,deny 
  11.     allow from all 
  12. </Directory>
  13.  
  14. ErrorLog ${APACHE_LOG_DIR}/$server_alias-error.log; 
  15. LogLevel warn 
  16. CustomLog ${APACHE_LOG_DIR}/$server_alias-access.log combined
  17. </VirtualHost>
  18. HOST;
  19.  




, a2ensite:

  1. file_put_contents("/etc/apache2/sites-available/$server_alias", $host_template); 
  2. echo "Apache config for this hostname created successfully! Don't forget to run a2ensite $server_alias\n";
  3.  




. +x, :

chmod +x a2addsite









. :

% sudo ./a2addsite

Add test.local to your /etc/hosts? (Y/N) [Y]:

Enter your document root [/home/www/test.local]:

Apache config for this hostname created successfully! Don't forget to run a2ensite test.local




:

% sudo ./a2addsite --server-alias=test2.local --add-to-hosts --document-root=default

Apache config for this hostname created successfully! Don't forget to run a2ensite test2.local






PHP , . , , - .







, PHP PHP (.):

Command line usage

PHP input/output



All Articles