Вот способ добиться этого, который подходит для частной среды разработки, которая используется только для этой цели, но никогда не должен использоваться на машине, -маршрутизируемой через Интернет.
Выполните эти довольно радикальные команды:
# chown myuser:myser /usr/bin
# chown myuser:myser /usr/bin/php-cgi
, затем:
# chmod 711 /home/myuser
# chmod 755 /home/myuser/public_html
#
Кроме того, (повторно -)скомпилируйте Apache для установки suEXEC AP_DOC_ROOT="/"
и (повторно -).
Измените /etc/httpd/conf/httpd.conf
в соответствии с этими строками:
ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf
ServerAdmin root@localhost
#ServerName example.local
ServerName localhost
User apache
Group apache
<Directory />
AllowOverride none
Require all granted
</Directory>
<VirtualHost *:80>
DocumentRoot "/home/myuser/public_html/public"
SuexecUserGroup myuser myuser
<IfModule alias_module>
ScriptAlias /cgi-bin/ /home/myuser/public_html/public/cgi-bin/
</IfModule>
<Directory "/home/myuser/public_html/public">
Options Indexes FollowSymLinks ExecCGI
AllowOverride None
Require all granted
AddHandler cgi-script.cgi.pl
</Directory>
</VirtualHost>
<IfModule dir_module>
DirectoryIndex index.php index.cgi index.html index.htm
</IfModule>
и изменить /etc/httpd/conf.d/php.conf
примерно так:
ScriptAlias /local-bin /usr/bin
AddHandler application/x-httpd-php5 php
Action application/x-httpd-php5 /local-bin/php-cgi
Наконец, (re -)запустите Apache.
Это лучший подход, который я нашел до того, как задать вопрос выше. Однако почти наверняка есть лучшие альтернативы, и я хотел бы узнать о них, поэтому я задаю вопрос. (Например, установка двоичного файла php-cgi
в домашнем каталоге пользователя в принципе должна быть жизнеспособной и менее радикальной мерой, чем изменение права собственности на системный двоичный файл и его каталог.)
Итак, пожалуйста, не стесняйтесь голосовать за этот ответ, если он вам помог, или конструктивно комментировать, если он вам не помог, но я пока не буду отмечать его как «правильный» в надежде, что появятся лучшие ответы..
Вы не можете просто дать " -a" и оставить его без аргумента, вы просто не упоминаете " -a" вообще и внутри скрипта, если -опция не указана, вы можете назначить значение по умолчанию, как показано ниже:
if [[ -z $ALPHA ]]
then
ALPHA="defaultvalue"
fi