5

PHP localhost/PhpProject3/create.php を使用して新しいフォルダーを作成しようとしています。

<?php mkdir('newdir', 0777); ?>

しかし、このコードはそれを行いません。それも機能しません:

<?php mkdir('/var/www/PhpProject3/newdir',0777); ?> 

LAMPをインストールしました。PHPスクリプトが動作するので、問題は設定(おそらくchmod?)にあると思います。たとえば、単純な test.php を作成します。

<?php echo 'Great'; ?>

それを実行してくださいlocalhost/PhpProject3/test.php。結果は素晴らしいです。

私はネットビーンズを使用しています。ファイルは次のとおりです: /var/www/PhpProject3 。私はそれを実行します: localhost/PhpProject3/... /etc/apache2/sites-available/default の内容:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

touch() を使用してファイルを作成することもできません。

誰でも私を助けることができますか?

4

3 に答える 3

13

あなたのウェブサーバーはどのユーザーとして実行されていますか? と書いてみればわかります

ps aux

そして見てください。おそらくユーザーwww-dataです(ubuntuを使用している場合)。

次に、ディレクトリをそのユーザーにchownし、ユーザーにディレクトリへの書き込み権限を与えます。

chown www-data /var/www/PhpProject3

chmod u+w /var/www/PhpProject3

別の方法は、代わりにグループ権限を使用することです。

chgrp www-data /var/www/PhpProject3

chmod g+w /var/www/PhpProject3

Web サーバーがグループ www-data として実行されていると仮定します。

于 2013-05-04T11:53:44.097 に答える
3

本当に問題が何であるかを推測するのは難しいです。許可またはパスの問題を想定しています。次の戻り値を確認する必要がありますmkdir()

if(!mkdir()) {
    print_r(error_get_last());
}

さらに、エラーメッセージを有効にすることを学ぶ必要があります。mkdir()失敗した場合にトリガーされます。本番システムではセキュリティ上のリスクになる可能性があるため、デフォルトでは無効になっています。ただし、開発中はそれらを有効にする必要があります。php.ini開発システムで有効にすることができます:

php.ini :

...
display_errors=1
...
log_errors=1
...
error_log="/path/to/writable/file"
...
error_reporting=E_ALL

を変更しphp.iniたら、Web サーバーを再起動することを忘れないでください。

于 2013-05-04T11:52:10.033 に答える